:root,[data-theme=light]{--text:#6b6375;--text-h:#08060d;--bg:#fff;--border:#e5e4e7;--accent:#aa3bff;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark]{--text:#9ca3af;--text-h:#f3f4f6;--bg:#16171d;--border:#2e303a;--accent:#c084fc;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root{font:18px/145% var(--sans);color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root:not([data-theme]){--text:#9ca3af;--text-h:#f3f4f6;--bg:#16171d;--border:#2e303a;--accent:#c084fc;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}body{margin:0}#root{flex-direction:column;min-height:100svh;display:flex}.theme-toggle{border:1px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:6px;padding:6px 10px;font-size:18px;line-height:1}.theme-toggle:hover{border-color:var(--accent);color:var(--accent)}@media (prefers-color-scheme:dark){:root:not([data-theme]) .theme-toggle{color:#f5c542;border-color:#f5c542}}[data-theme=dark] .theme-toggle{color:#f5c542;border-color:#f5c542}[data-theme=dark] .theme-toggle:hover{color:var(--accent);border-color:var(--accent)}.app-header{border-bottom:1px solid var(--border);justify-content:flex-end;padding:12px 16px;display:flex}.app-main{flex-direction:column;flex:1;display:flex}.splash{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:32px;display:flex}.splash__brand{flex-direction:column;align-items:center;width:100%;max-width:320px;display:flex}.splash__logo{width:100%}.splash__tagline{text-align:center;color:#2f2f2b;width:100%;margin:4px 0 0;font-size:clamp(14px,4.5vw,22px)}@media (prefers-color-scheme:dark){:root:not([data-theme]) .splash__tagline{color:#d0d0d4}}[data-theme=dark] .splash__tagline{color:#d0d0d4}@media (prefers-color-scheme:dark){:root:not([data-theme]) .splash__logo{filter:invert()hue-rotate(180deg)}}[data-theme=dark] .splash__logo{filter:invert()hue-rotate(180deg)}.splash__login-btn{background:var(--accent);color:#fff;font:inherit;cursor:pointer;border:none;border-radius:6px;padding:12px 32px;font-size:16px;font-weight:500;display:inline-block}.splash__spinner{border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:40px;height:40px;animation:.7s linear infinite splash-spin}@keyframes splash-spin{to{transform:rotate(360deg)}}.splash--exiting{animation:.38s ease-in forwards splash-exit}@keyframes splash-exit{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-32px)}}.login{flex-direction:column;flex:1;justify-content:center;align-items:center;padding:24px 16px;display:flex}.login__logo{width:100%;max-width:320px;margin-bottom:24px;animation:.38s ease-out both login-logo-enter}@media (prefers-color-scheme:dark){:root:not([data-theme]) .login__logo{filter:invert()hue-rotate(180deg)}}[data-theme=dark] .login__logo{filter:invert()hue-rotate(180deg)}.login__form{flex-direction:column;gap:16px;width:100%;max-width:360px;animation:.38s ease-out 80ms both login-form-enter;display:flex}@keyframes login-logo-enter{0%{opacity:0;transform:translateY(-28px)}to{opacity:1;transform:translateY(0)}}@keyframes login-form-enter{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.login__field{flex-direction:column;gap:6px;display:flex}.login__label{color:var(--text-h);font-size:14px;font-weight:500}.login__input{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text);font:inherit;box-sizing:border-box;border-radius:6px;outline:none;padding:10px 12px}.login__input:focus{border-color:var(--accent)}.login__input:not(:placeholder-shown):invalid{border-color:#e53e3e}.login__input:not(:placeholder-shown):invalid+.login__error{display:block}.login__error{color:#e53e3e;font-size:13px;display:none}.login__password-wrap{position:relative}.login__password-wrap .login__input{padding-right:44px}.login__password-toggle{cursor:pointer;color:var(--text);background:0 0;border:none;padding:4px;font-size:16px;line-height:1;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.login__password-toggle:hover{color:var(--accent)}.login__submit{background:var(--accent);color:#fff;font:inherit;cursor:pointer;appearance:none;-webkit-font-smoothing:antialiased;border:1px solid #0000;border-radius:6px;margin-top:4px;padding:12px 32px;font-size:16px;font-weight:500;transform:translateZ(0)}.login__submit:hover{opacity:.9}.login__submit--loading{color:#0000;pointer-events:none;position:relative}.login__submit--loading:after{content:"";border:2px solid #fff6;border-top-color:#fff;border-radius:50%;width:18px;height:18px;margin:auto;animation:.6s linear infinite spin;position:absolute;inset:0}@keyframes spin{to{transform:rotate(360deg)}}.login__auth-error{text-align:center;color:#e53e3e;margin:0;font-size:13px}.login__forgot{color:var(--accent);text-align:center;font-size:14px;text-decoration:none}.login__forgot:hover{text-decoration:underline}.login__forgot--disabled{opacity:.5;pointer-events:none}.login__reset-success{text-align:center;color:#2f855a;margin:4px 0 0;font-size:13px}.login__reset-error{text-align:center;color:#e53e3e;margin:4px 0 0;font-size:13px}.user-avatar{align-items:center;gap:.5rem;display:flex}.user-avatar__icon{background:var(--border);width:28px;height:28px;color:var(--text-h);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.user-avatar__icon svg{width:18px;height:18px}.user-avatar__email{color:var(--text-h);font-size:.8125rem}.hamburger__toggle{border:1px solid var(--border);width:36px;height:36px;color:var(--text-h);cursor:pointer;background:0 0;border-radius:6px;order:-1;justify-content:center;align-items:center;padding:0;display:flex}.hamburger__toggle:hover{background:color-mix(in srgb, var(--border) 40%, transparent)}.hamburger__icon{width:20px;height:20px}.hamburger__line{transform-origin:50%;transition:transform .25s,opacity .25s}.hamburger__icon--open .hamburger__line--top{transform:translateY(6px)rotate(45deg)}.hamburger__icon--open .hamburger__line--mid{opacity:0}.hamburger__icon--open .hamburger__line--bot{transform:translateY(-6px)rotate(-45deg)}.hamburger__backdrop{z-index:100;background:#0006;position:fixed;inset:0}.hamburger__drawer{background:var(--bg);border-right:1px solid var(--border);z-index:101;flex-direction:column;width:240px;padding:1.5rem .5rem;animation:.25s hamburger-slide-in;display:flex;position:fixed;top:0;bottom:0;left:0}@keyframes hamburger-slide-in{0%{transform:translate(-100%)}to{transform:translate(0)}}.hamburger__nav-item{cursor:pointer;text-align:left;color:var(--text);white-space:nowrap;background:0 0;border:none;border-radius:6px;align-items:center;gap:.625rem;padding:.75rem 1rem;font-size:.9375rem;display:flex}.hamburger__nav-item svg{flex-shrink:0;width:16px;height:16px}.hamburger__nav-item:hover{color:var(--text-h);background:color-mix(in srgb, var(--border) 30%, transparent)}.hamburger__nav-item--active{color:var(--accent);background:color-mix(in srgb, var(--accent) 10%, transparent);font-weight:600}@media (width>=768px){.hamburger__toggle{display:none}}.statement-detail__overlay{z-index:50;background:#00000059;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.statement-detail{background:var(--bg);border:1px solid var(--border);border-radius:8px;width:calc(100% - 2rem);max-width:400px;box-shadow:0 8px 24px #00000026}.statement-detail__header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:.75rem 1rem;display:flex}.statement-detail__title{color:var(--text-h);font-size:.9rem;font-weight:600}.statement-detail__close{width:28px;height:28px;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:0;display:flex}.statement-detail__close:hover{background:color-mix(in srgb, var(--border) 50%, transparent);color:var(--text-h)}.statement-detail__close svg{width:14px;height:14px}.statement-detail__body{flex-direction:column;gap:.75rem;padding:1rem;display:flex}.statement-detail__field{flex-direction:column;gap:.15rem;display:flex}.statement-detail__label{text-transform:uppercase;letter-spacing:.04em;color:var(--text);font-size:.7rem}.statement-detail__value{color:var(--text-h);word-break:break-word;font-size:.9rem;font-weight:500}.statement-detail__value--credit{color:#16a34a}.statement-detail__value--debit{color:#dc2626}[data-theme=dark] .statement-detail__value--credit{color:#4ade80}[data-theme=dark] .statement-detail__value--debit{color:#f87171}@media (prefers-color-scheme:dark){:root:not([data-theme]) .statement-detail__value--credit{color:#4ade80}:root:not([data-theme]) .statement-detail__value--debit{color:#f87171}}.banking-section{flex-direction:column;gap:1rem;max-width:900px;height:100%;margin:0 auto;display:flex}.banking-section__heading{color:var(--text-h);margin:0;font-size:1.1rem;font-weight:600;display:none}.banking-section__account-select{border:1px solid var(--border);background:var(--bg);color:var(--text-h);font:inherit;border-radius:6px;max-width:280px;padding:.4rem .6rem;font-size:.85rem}.banking-section__header{border:1px solid var(--border);border-radius:8px;flex-wrap:wrap;gap:1rem 2rem;padding:.75rem 1rem;display:flex}.banking-section__header-field{flex-direction:column;gap:.15rem;display:flex}.banking-section__header-label{text-transform:uppercase;letter-spacing:.04em;color:var(--text);font-size:.7rem}.banking-section__header-value{color:var(--text-h);font-size:.9rem;font-weight:500}.banking-section__groups{flex-direction:column;flex:1;gap:0;min-height:0;display:flex;overflow-y:auto}.banking-section__group{border-bottom:1px solid var(--border)}.banking-section__group:first-child{border-top:1px solid var(--border)}.banking-section__group:nth-child(2n)>.banking-section__group-toggle{background:color-mix(in srgb, var(--border) 20%, transparent)}.banking-section__group-toggle{cursor:pointer;width:100%;color:var(--text-h);font:inherit;text-align:left;background:0 0;border:none;align-items:center;gap:.5rem;padding:.6rem .5rem;font-size:.9rem;font-weight:500;display:flex}.banking-section__group-toggle:hover{background:color-mix(in srgb, var(--border) 30%, transparent)}.banking-section__chevron{flex-shrink:0;width:14px;height:14px;transition:transform .2s}.banking-section__chevron--expanded{transform:rotate(90deg)}.banking-section__group-label{flex:1}.banking-section__pdf-btn{color:var(--accent);cursor:pointer;font:inherit;background:0 0;border:none;border-radius:4px;align-items:center;gap:.3rem;padding:.2rem .5rem;font-size:.75rem;display:flex}.banking-section__pdf-btn:hover{background:color-mix(in srgb, var(--accent) 15%, transparent)}.banking-section__pdf-btn svg{flex-shrink:0;width:18px;height:18px}.banking-section__pdf-label{white-space:nowrap}.banking-section__group-body{padding:0 .5rem .75rem;overflow-x:auto}.banking-section__table{border-collapse:collapse;white-space:nowrap;width:100%;font-size:.8rem}.banking-section__table th{border-bottom:2px solid var(--border);color:var(--text);text-transform:uppercase;letter-spacing:.03em;text-align:left;padding:.4rem .5rem;font-size:.7rem;font-weight:600}.banking-section__table th.banking-section__col-amount{text-align:right}.banking-section__table td{border-bottom:1px solid var(--border);color:var(--text-h);padding:.35rem .5rem}.banking-section__table tbody tr:nth-child(2n) td{background:color-mix(in srgb, var(--border) 20%, transparent)}.banking-section__col-amount{text-align:right;font-variant-numeric:tabular-nums}.banking-section__debit{color:#dc2626}.banking-section__credit{color:#16a34a}[data-theme=dark] .banking-section__debit{color:#f87171}[data-theme=dark] .banking-section__credit{color:#4ade80}@media (prefers-color-scheme:dark){:root:not([data-theme]) .banking-section__debit{color:#f87171}:root:not([data-theme]) .banking-section__credit{color:#4ade80}}.banking-section__viewer{flex-direction:column;flex:1;min-height:0;display:flex}.banking-section__viewer-bar{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:.5rem .75rem;display:flex}.banking-section__viewer-title{color:var(--text-h);font-size:.9rem;font-weight:500}.banking-section__viewer-close{width:28px;height:28px;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:0;display:flex}.banking-section__viewer-close:hover{background:color-mix(in srgb, var(--border) 50%, transparent);color:var(--text-h)}.banking-section__viewer-close svg{width:16px;height:16px}.banking-section__viewer-body{flex:1;min-height:500px;display:flex;position:relative}.banking-section__viewer-frame{border:none;flex:1;width:100%}.banking-section__viewer-spinner{color:var(--text);flex-direction:column;justify-content:center;align-items:center;gap:.75rem;font-size:.9rem;display:flex;position:absolute;inset:0}.banking-section__spinner{border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:28px;height:28px;animation:.8s linear infinite banking-spin}@keyframes banking-spin{to{transform:rotate(360deg)}}.banking-section__loading,.banking-section__empty{text-align:center;color:var(--text);padding:2rem;font-size:.9rem}.banking-section__row{cursor:pointer}.banking-section__row:hover{background:color-mix(in srgb, var(--border) 40%, transparent)!important}@media (width<=767px){.banking-section__heading{display:block}.banking-section__header-wrapper,.banking-section__col-desc,.banking-section__col-balance{display:none}.banking-section__table{white-space:normal}.banking-section__pdf-label{display:none}}.invoices-section{flex-direction:column;gap:1rem;max-width:640px;height:100%;margin:0 auto;display:flex}.invoices-section__heading{color:var(--text-h);margin:0;font-size:1.1rem;font-weight:600}.invoices-section__list{border:1px solid var(--border);border-radius:8px;flex-direction:column;flex:1;gap:0;min-height:0;display:flex;overflow:hidden auto}.invoices-section__row{border-bottom:1px solid var(--border);align-items:center;gap:1rem;padding:.6rem .75rem;display:flex}.invoices-section__row:last-child{border-bottom:none}.invoices-section__row:nth-child(2n){background:color-mix(in srgb, var(--border) 20%, transparent)}.invoices-section__row:hover{background:color-mix(in srgb, var(--border) 40%, transparent)}.invoices-section__inv-number{color:var(--text-h);flex:1;font-size:.9rem;font-weight:500}.invoices-section__date{width:120px;color:var(--text);font-size:.85rem}.invoices-section__pdf-btn{color:var(--accent);cursor:pointer;font:inherit;background:0 0;border:none;border-radius:4px;align-items:center;gap:.3rem;padding:.2rem .5rem;font-size:.75rem;display:flex}.invoices-section__pdf-btn:hover{background:color-mix(in srgb, var(--accent) 15%, transparent)}.invoices-section__pdf-btn svg{flex-shrink:0;width:18px;height:18px}.invoices-section__pdf-label{white-space:nowrap}.invoices-section__loading,.invoices-section__empty{text-align:center;color:var(--text);padding:2rem;font-size:.9rem}@media (width<=767px){.invoices-section__pdf-label{display:none}.invoices-section__date{width:auto}}.taxes-section{flex-direction:column;gap:1rem;max-width:640px;height:100%;margin:0 auto;display:flex}.taxes-section__heading{color:var(--text-h);margin:0;font-size:1.1rem;font-weight:600}.taxes-section__list{border:1px solid var(--border);border-radius:8px;flex-direction:column;flex:1;gap:0;min-height:0;display:flex;overflow:hidden auto}.taxes-section__row{border-bottom:1px solid var(--border);align-items:center;gap:1rem;padding:.6rem .75rem;display:flex}.taxes-section__row:last-child{border-bottom:none}.taxes-section__row:nth-child(2n){background:color-mix(in srgb, var(--border) 20%, transparent)}.taxes-section__row:hover{background:color-mix(in srgb, var(--border) 40%, transparent)}.taxes-section__description{color:var(--text-h);flex:1;font-size:.9rem;font-weight:500}.taxes-section__date{width:120px;color:var(--text);font-size:.85rem}.taxes-section__pdf-btn{color:var(--accent);cursor:pointer;font:inherit;background:0 0;border:none;border-radius:4px;align-items:center;gap:.3rem;padding:.2rem .5rem;font-size:.75rem;display:flex}.taxes-section__pdf-btn:hover{background:color-mix(in srgb, var(--accent) 15%, transparent)}.taxes-section__pdf-btn svg{flex-shrink:0;width:18px;height:18px}.taxes-section__pdf-label{white-space:nowrap}.taxes-section__loading,.taxes-section__empty{text-align:center;color:var(--text);padding:2rem;font-size:.9rem}@media (width<=767px){.taxes-section__pdf-label{display:none}.taxes-section__date{width:auto}}.expenses-section{flex-direction:column;gap:1rem;max-width:1200px;height:100%;margin:0 auto;display:flex}.expenses-section__heading{color:var(--text-h);margin:0;font-size:1.1rem;font-weight:600}.expenses-section__list{border:1px solid var(--border);border-radius:8px;flex-direction:column;flex:1;gap:0;min-height:0;display:flex;overflow:hidden auto}.expenses-section__row{border-bottom:1px solid var(--border);white-space:nowrap;align-items:center;gap:1rem;padding:.6rem .75rem;display:flex}.expenses-section__row:last-child{border-bottom:none}.expenses-section__row:nth-child(2n){background:color-mix(in srgb, var(--border) 20%, transparent)}.expenses-section__row:hover{background:color-mix(in srgb, var(--border) 40%, transparent)}.expenses-section__date{width:110px;color:var(--text);flex-shrink:0;font-size:.85rem}.expenses-section__description{color:var(--text-h);text-overflow:ellipsis;flex:1;font-size:.9rem;font-weight:500;overflow:hidden}.expenses-section__amount{width:120px;color:var(--text-h);text-align:right;font-variant-numeric:tabular-nums;flex-shrink:0;font-size:.85rem}.expenses-section__currency{width:40px;color:var(--text);flex-shrink:0;font-size:.75rem}.expenses-section__amount--thb{width:140px;color:var(--text);text-align:right;font-size:.8rem}.expenses-section__rate{width:80px;color:var(--text);flex-shrink:0;font-size:.75rem}.expenses-section__thb-label{width:30px;color:var(--text);flex-shrink:0;font-size:.75rem}.expenses-section__pdf-cell{flex-shrink:0;width:120px}.expenses-section__pdf-btn{color:var(--accent);cursor:pointer;font:inherit;background:0 0;border:none;border-radius:4px;align-items:center;gap:.3rem;padding:.2rem .5rem;font-size:.75rem;display:flex}.expenses-section__pdf-btn:hover{background:color-mix(in srgb, var(--accent) 15%, transparent)}.expenses-section__pdf-btn svg{flex-shrink:0;width:18px;height:18px}.expenses-section__pdf-label{white-space:nowrap}.expenses-section__loading,.expenses-section__empty{text-align:center;color:var(--text);padding:2rem;font-size:.9rem}@media (width<=767px){.expenses-section__description,.expenses-section__amount:not(.expenses-section__amount--thb),.expenses-section__currency,.expenses-section__rate,.expenses-section__thb-label,.expenses-section__pdf-label{display:none}.expenses-section__row{white-space:normal}.expenses-section__amount--thb{flex:1;width:auto}.expenses-section__pdf-cell{width:auto}}.dashboard{background:var(--bg);height:100svh;color:var(--text);flex-direction:column;display:flex;overflow:hidden}.dashboard__topbar{border-bottom:1px solid var(--border);background:var(--bg);justify-content:flex-end;align-items:center;gap:.75rem;padding:.75rem 1.5rem;display:flex}.dashboard__logo{width:auto;height:2rem;margin-right:auto}@media (prefers-color-scheme:dark){:root:not([data-theme]) .dashboard__logo{filter:invert()hue-rotate(180deg)}}[data-theme=dark] .dashboard__logo{filter:invert()hue-rotate(180deg)}.dashboard__logout{background:var(--accent);border:1px solid var(--accent);color:#f3f4f6;cursor:pointer;border-radius:6px;padding:.375rem .75rem;font-size:.875rem}.dashboard__logout:hover{opacity:.85}.dashboard__body{flex:1;min-height:0;display:flex;overflow:hidden}.dashboard__sidebar{border-right:1px solid var(--border);flex-direction:column;width:fit-content;padding:1rem .5rem;display:flex}.dashboard__nav-item{cursor:pointer;text-align:left;width:auto;color:var(--text);white-space:nowrap;background:0 0;border:none;align-items:center;gap:.625rem;padding:.625rem 1rem;font-size:.9375rem;display:flex}.dashboard__nav-item svg{flex-shrink:0;width:16px;height:16px}.dashboard__nav-item:hover{color:var(--text-h)}.dashboard__nav-item--active{color:var(--accent);border-left:3px solid var(--accent);padding-left:calc(1rem - 3px);font-weight:600}.dashboard__topbar{flex-shrink:0}.dashboard__content{color:var(--text-h);flex:1;min-height:0;padding:2rem;font-size:1.25rem;overflow:hidden auto}@media (width<=767px){.dashboard__sidebar{display:none}.dashboard__content{padding:.75rem}}
