:root{font-family:Noto Sans Thai,system-ui,sans-serif;color:#253c33;background:#f4f6f1;font-synthesis:none;font-size:14px}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer;border:0;display:inline-flex;align-items:center;justify-content:center;gap:9px;font-weight:600;min-height:46px;border-radius:12px;padding:11px 16px}button:disabled{opacity:.5;cursor:default}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #a78b41;outline-offset:4px}button svg{flex-shrink:0}a{color:inherit;text-decoration:none}.primary{background:#153d32;color:#fff}.secondary{background:#eef2e9;color:#294b3e;border:1px solid #e0e6d9}.danger{background:#a13b32;color:#fff}.danger-text{color:#a13b32!important}.text-button{background:transparent;min-height:40px;padding:6px 2px;font-size:12px;color:#527160}.icon-button{width:44px;height:44px;min-height:44px;padding:10px;background:#edf1e8;color:#466050}.brand{display:flex;align-items:center;gap:10px;font-size:17px;font-weight:700}.brand small{display:block;font-size:10px;color:#7b8b7e;font-weight:400;margin-top:1px}.mark{display:grid;place-items:center;background:#153d32;color:#e7dba7;width:40px;height:40px;border-radius:13px;font-size:26px;font-weight:600}.app-shell{max-width:960px;margin:auto}.app-header{display:flex;align-items:center;justify-content:space-between;padding:22px 24px 14px}.app-main{padding:14px 24px 110px;min-height:calc(100dvh - 90px)}.page-heading{display:flex;align-items:center;gap:12px;justify-content:space-between;margin:4px 0 22px}.page-heading>div{flex:1}h1{font-size:27px;line-height:1.3;letter-spacing:-.8px;margin:3px 0 0;font-weight:700}h2{font-size:16px;line-height:1.5;margin:0 0 16px}h3{font-size:14px;margin:0}.eyebrow{color:#7b8c7c;font-size:11px;margin:0 0 4px}.month-pill{font-size:11px;border:1px solid #dfe5d8;background:#fffdf8;border-radius:20px;padding:8px 12px;color:#64745e;white-space:nowrap}.balance-card{position:relative;overflow:hidden;background:#153d32;color:#fdfcf5;border-radius:24px;padding:28px 28px 25px;box-shadow:0 12px 24px #153d3212}.balance-label{display:flex;justify-content:space-between;align-items:center;color:#c0d0bf;font-size:12px;position:relative;z-index:1}.balance-label svg{color:#dfd79d}.balance-value{display:block;font-size:40px;font-weight:600;letter-spacing:-1.8px;margin:10px 0 23px;position:relative;z-index:1}.balance-breakdown{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid #ffffff20;padding-top:20px;position:relative;z-index:1}.balance-breakdown>div+div{border-left:1px solid #ffffff20;padding-left:22px}.balance-breakdown span{display:flex;align-items:center;gap:6px;font-size:11px;color:#c6d2c3}.balance-breakdown strong{display:block;font-size:20px;font-weight:500;margin-top:5px}.balance-decoration{position:absolute;width:230px;height:230px;right:-115px;top:-100px;border:35px solid #7a95651c;border-radius:50%;box-shadow:0 0 0 35px #7a95650e}.quick-add{width:100%;margin:16px 0 22px;background:#e1e9d4;color:#254c39;min-height:50px}.surface{background:#fffefa;border:1px solid #e5e8df;border-radius:20px;padding:22px;margin:0 0 18px}.section-title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.section-title h2{margin:0}.section-title>span{font-size:11px;color:#8c998c}.transaction-row{background:transparent;width:100%;display:flex;align-items:center;text-align:left;gap:12px;border-bottom:1px solid #edf0e8;border-radius:0;padding:17px 0;min-height:88px;font-weight:400}.transaction-row:last-child{border:0;padding-bottom:0}.transaction-icon{display:grid;place-items:center;flex-shrink:0;width:43px;height:43px;border-radius:14px}.income{background:#e5eddb;color:#477240}.expense{background:#f1e8dc;color:#9a7546}.transaction-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.transaction-text strong{font-size:13px;font-weight:600}.transaction-text>span{font-size:11px;color:#8b9387;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:300px}.transaction-text small{font-size:10px;color:#95a08e;display:flex;align-items:center;gap:3px}.transaction-row>strong{font-size:13px;font-weight:600;white-space:nowrap}.income-text{color:#558044}.expense-text{color:#886147}.category-bar{margin-top:18px}.category-bar>div:first-child{display:flex;justify-content:space-between;font-size:12px;margin-bottom:9px}.category-bar strong{font-weight:500}.bar-track{height:7px;border-radius:20px;background:#edf0e6;overflow:hidden}.bar-track>div{height:100%;border-radius:20px;background:#879967;min-width:0}.private-note{display:flex;align-items:center;justify-content:center;gap:6px;font-size:10px;color:#8b9886;margin:23px 0}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:960px;display:grid;grid-template-columns:repeat(5,1fr);background:#fffefaed;border-top:1px solid #e4e8dd;padding:10px 14px calc(10px + env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:20}.bottom-nav button{display:flex;flex-direction:column;gap:5px;padding:3px 0;min-height:50px;background:transparent;color:#8b9788;font-weight:400}.bottom-nav button.active{color:#254d39}.bottom-nav small{font-size:10px}.bottom-nav button.nav-add>span{width:46px;height:46px;display:grid;place-items:center;border-radius:16px;background:#153d32;color:#f5f2dc;margin-top:-22px;box-shadow:0 5px 12px #153d3220}.bottom-nav .nav-add small{margin-top:1px}.muted,.help{color:#8b9587;font-size:12px;line-height:1.65}.help{font-size:10px;margin:10px 0 0}.error{color:#a33a32;font-size:12px}.empty-state{text-align:center;padding:25px 10px;color:#95a087}.empty-state svg{margin-bottom:12px}.empty-state h3{color:#637b5f}.empty-state p{font-size:11px}.status-banner,.success-banner,.error-banner,.pending-banner{font-size:12px;line-height:1.7;border-radius:12px;padding:12px 15px;margin-bottom:14px;width:100%;text-align:left;display:flex;align-items:center;justify-content:space-between;gap:8px;font-weight:400}.status-banner{background:#eee6ca;color:#806723;display:block}.status-banner small{display:block}.success-banner{background:#e4efdc;color:#416737}.error-banner{background:#fae8e2;color:#9a3a2d}.success-banner button,.error-banner button{background:transparent;padding:0;min-height:24px;color:inherit}.pending-banner{background:#e6ebdf;color:#56704d;justify-content:flex-start}.setup-card{text-align:center;padding:34px 25px;margin-top:25px}.setup-card h1{font-size:24px;margin:22px 0 15px}.setup-card p{color:#7c8b72;line-height:1.8}.setup-card>button{width:100%;margin-top:12px}.setup-icon{display:inline-flex;background:#eaf0df;padding:18px;border-radius:20px;color:#638255}input,select,textarea{background:#fffdf8;border:1px solid #dde3d6;border-radius:10px;min-height:47px;width:100%;padding:11px 12px;color:#2d4939;outline:none}input:focus,select:focus,textarea:focus{border-color:#71945b;box-shadow:0 0 0 3px #71945b15}label{display:block;color:#6c7b65;font-size:12px;margin:15px 0}label input,label select,label textarea{display:block;margin-top:7px;font-size:13px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 15px}.form-grid>label{min-width:0}fieldset{border:0;padding:0;margin:0;min-width:0}.type-toggle{display:grid;grid-template-columns:1fr 1fr;gap:5px;background:#eff2e8;border-radius:13px;padding:5px}.type-toggle button{background:transparent;color:#95a087;min-height:42px}.type-toggle .active{background:#fffefa;box-shadow:0 2px 6px #153d320c;color:#6d6a47}.type-toggle .income.active{color:#4f7743}.amount-field{padding:18px 0 13px;border-bottom:1px solid #ebeee5;text-align:center;font-size:11px}.amount-field>div{display:flex;justify-content:center;align-items:center;gap:10px;color:#adba9b;font-size:25px}.amount-field input{width:100%;max-width:220px;border:0;text-align:center;font-size:42px;background:transparent;box-shadow:none;letter-spacing:-1.5px;padding:10px 0;min-height:75px;color:#153d32}.amount-field input::-webkit-inner-spin-button{-webkit-appearance:none}.optional{float:right;font-size:10px;color:#a5afa0}.receipt-picker{margin-top:25px;border-top:1px solid #eaede3;padding-top:20px}.receipt-picker .section-title{margin-bottom:15px}.receipt-picker .section-title span{font-size:10px}.two-buttons{display:grid;grid-template-columns:1fr 1fr;gap:10px}.two-buttons button{font-size:12px;padding:10px}.selected-files{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:15px}.selected-file{position:relative;min-width:0}.selected-file img,.selected-file .pdf-tile{display:block;width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px;border:1px solid #e3e7da}.selected-file small{display:block;font-size:9px;color:#7e8e72;margin-top:4px;text-align:center}.remove-file{position:absolute;top:4px;right:4px;border-radius:50%;width:23px;height:23px;min-height:23px;padding:0;background:#153d32c9;color:#fff}.pdf-tile{display:grid;place-items:center;background:#e9edde;color:#6d7855;font-size:12px;min-height:110px;border-radius:10px}.camera-review{margin-top:15px}.camera-review img{max-width:100%;max-height:300px;display:block;margin:auto;border-radius:10px}.camera-review .two-buttons{margin-top:15px}.save-button{margin-top:25px;width:100%;min-height:53px}.search-input{margin-bottom:15px;font-size:12px;background:#fffefa}.filters{padding:15px 20px}.filters summary{cursor:pointer;font-size:12px}.history-summary{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:#7b8b70;margin:20px 3px 12px}.detail-amount{font-size:38px;letter-spacing:-1.5px;display:block;text-align:center;margin:8px 0 25px}.detail-type{text-align:center;font-size:13px}.detail-fields{margin:0 0 22px}.detail-fields>div{display:flex;justify-content:space-between;gap:20px;padding:12px 0;border-bottom:1px solid #edf0e7;font-size:12px}.detail-fields dt{color:#919d87;flex-shrink:0}.detail-fields dd{margin:0;text-align:right;overflow-wrap:anywhere;white-space:pre-wrap}.transaction-id{overflow-wrap:anywhere;font-size:9px;text-align:center}.receipt-gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:20px 0}.gallery-image{width:100%;aspect-ratio:1;background:#f0f2e7;border-radius:10px;padding:0;overflow:hidden}.gallery-image img{width:100%;height:100%;object-fit:cover}.gallery-item small{font-size:10px;color:#899780;display:block;text-align:center;margin-top:5px}.gallery-item .text-button{font-size:10px;width:100%}.preview-loading{display:grid;place-items:center;aspect-ratio:1;border-radius:10px;font-size:10px;background:#edf1e5;color:#899a77}.image-viewer{position:fixed;inset:0;background:#101a15f7;z-index:100;color:#fff;display:flex;flex-direction:column;padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom)}.viewer-toolbar{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:15px}.viewer-toolbar span{margin-right:auto}.viewer-toolbar button,.viewer-navigation button{color:#fff;background:#ffffff18}.viewer-content{flex:1;overflow:auto;display:flex;align-items:flex-start;padding:20px}.viewer-content img{object-fit:contain;max-height:none;height:auto;margin:auto}.viewer-navigation{display:flex;justify-content:space-between;gap:20px;padding:20px}.confirm-dialog{width:calc(100% - 40px);max-width:400px;border:1px solid #e3e7da;border-radius:20px;padding:26px;background:#fffefa;color:#2b4939}.confirm-dialog::backdrop{background:#15251bc0;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.confirm-dialog h2{font-size:20px}.confirm-dialog p{font-size:13px;color:#79896c;line-height:1.8}.dialog-actions{display:flex;flex-direction:column;gap:10px;margin-top:22px}.settings-account{display:flex;align-items:center;gap:12px}.avatar{display:grid;place-items:center;background:#e4ebd6;color:#59724b;width:42px;height:42px;border-radius:14px;flex-shrink:0}.settings-account>div{min-width:0}.settings-account strong{font-size:12px}.settings-account p{font-size:10px;overflow-wrap:anywhere;color:#7d8e72;margin:3px 0}.pending-row{padding:15px 0;border-top:1px solid #edf0e6}.pending-row strong{font-size:12px}.pending-row p,.pending-row small{font-size:10px;color:#8c9b80;margin:5px 0}.pending-row .error{color:#a33a32}.pending-row button{margin-top:12px;width:100%}.switch-label{display:flex;align-items:center;justify-content:space-between;gap:15px}.switch-label input{width:20px;height:20px;min-height:20px;accent-color:#153d32;margin:0}.logout-button{width:100%;margin-top:7px}.month-filter{font-size:10px;margin:0}.month-filter input{width:155px;font-size:11px;min-height:40px;padding:8px}.report-comparison>div{display:grid;grid-template-columns:1fr 1fr;gap:8px;font-size:12px;margin-top:20px}.report-comparison strong{text-align:right;font-weight:500}.report-comparison .bar-track{grid-column:1/-1;height:10px}.income-bar{background:#7f9865!important}.expense-bar{background:#b9a37b!important}.report-net{display:flex;justify-content:space-between;margin-top:25px;padding-top:20px;border-top:1px solid #e9eddf;font-size:14px}.table-scroll{overflow:auto}table{border-collapse:collapse;width:100%;white-space:nowrap;font-size:10px}th{color:#8c9980;font-weight:500;text-align:right;border-bottom:1px solid #e3e8d9;padding:11px 8px}td{text-align:right;padding:13px 8px;border-bottom:1px solid #edf0e6}td:first-child,th:first-child{text-align:left}.account-report{display:flex;flex-direction:column;gap:9px;padding:17px 0;border-bottom:1px solid #e9eee0;font-size:12px}.account-report div{display:flex;justify-content:space-between;gap:12px;font-size:10px;color:#8a997d}.account-report>span{font-size:11px;color:#5b7550}.login-main{min-height:100dvh;display:flex;flex-direction:column;align-items:center;padding:44px 20px;background:radial-gradient(ellipse at 15% 15%,#e4ebe0,transparent 50%)}.login-main .brand{font-size:12px;letter-spacing:3px;margin-bottom:45px}.login-card{width:100%;max-width:430px;background:#fffdf8;border:1px solid #e0e5d9;border-radius:28px;padding:40px 32px;text-align:center;box-shadow:0 20px 70px #153d320b}.login-card h1{font-size:38px;margin:15px 0 8px;letter-spacing:-1px}.subtitle{color:#839479;margin:0}.illustration{position:relative;margin:38px auto;width:112px;height:112px;display:grid;place-items:center;background:#edf0df;color:#153d32;font-size:66px;border-radius:32px;transform:rotate(-6deg)}.illustration span{position:absolute;right:-12px;bottom:-8px;border:5px solid #fffdf8;border-radius:50%;background:#d9e8c7;width:50px;height:50px;font-size:30px}.login-card .primary{width:100%;min-height:52px}.microsoft{display:grid;grid-template-columns:repeat(2,9px);gap:2px}.microsoft i{width:9px;height:9px;background:#f35325}.microsoft i:nth-child(2){background:#81bc06}.microsoft i:nth-child(3){background:#05a6f0}.microsoft i:nth-child(4){background:#ffba08}.login-footer{font-size:11px;color:#899384;margin-top:30px}@media(min-width:700px){.app-header{padding:30px 40px 20px}.app-main{padding:20px 40px 110px}.balance-card{padding:35px 40px}.balance-value{font-size:52px}.balance-breakdown strong{font-size:25px}.surface{padding:28px}.transaction-form{max-width:620px;margin:auto}.receipt-gallery,.selected-files{grid-template-columns:repeat(4,1fr)}}@media(max-width:430px){.app-header{padding:20px 20px 12px}.app-main{padding:12px 20px 100px}.page-heading{margin-bottom:19px}.page-heading h1{font-size:24px}.month-pill{font-size:9px;padding:7px 9px}.balance-card{padding:24px}.balance-value{font-size:36px}.balance-breakdown strong{font-size:18px}.surface{padding:18px;border-radius:18px}.transaction-row{gap:10px}.transaction-icon{width:37px;height:37px;border-radius:12px}.transaction-row>strong{font-size:11px}.transaction-text>span{max-width:140px}.form-grid{gap:0 10px}.transaction-form label{font-size:11px}.month-filter input{width:138px}.login-main{padding:30px 18px}.login-main .brand{margin-bottom:30px}.login-card{padding:32px 24px}}@media(prefers-reduced-motion:no-preference){button{transition:background .15s,opacity .15s}.surface,.balance-card{animation:arrive .25s ease-out}@keyframes arrive{0%{opacity:.7;transform:translateY(5px)}to{opacity:1;transform:none}}}@font-face{font-family:Noto Sans Thai;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/noto-sans-thai-thai-400-normal-BEOmKAI1.woff2) format("woff2"),url(/assets/noto-sans-thai-thai-400-normal-Dxb_unuU.woff) format("woff");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:Noto Sans Thai;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/noto-sans-thai-latin-ext-400-normal-nBP59pVw.woff2) format("woff2"),url(/assets/noto-sans-thai-latin-ext-400-normal-B-1H0YkH.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Noto Sans Thai;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/noto-sans-thai-latin-400-normal-BaWBrqFP.woff2) format("woff2"),url(/assets/noto-sans-thai-latin-400-normal-Dh_FJjOB.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Noto Sans Thai;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/noto-sans-thai-thai-500-normal-CU_X86GQ.woff2) format("woff2"),url(/assets/noto-sans-thai-thai-500-normal-BOGXO2tw.woff) format("woff");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:Noto Sans Thai;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/noto-sans-thai-latin-ext-500-normal-B-ZWb8SZ.woff2) format("woff2"),url(/assets/noto-sans-thai-latin-ext-500-normal-CrEHO7C8.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Noto Sans Thai;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/noto-sans-thai-latin-500-normal-fyBKClF1.woff2) format("woff2"),url(/assets/noto-sans-thai-latin-500-normal-BC04jsmm.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Noto Sans Thai;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/noto-sans-thai-thai-600-normal-Cs73sVjl.woff2) format("woff2"),url(/assets/noto-sans-thai-thai-600-normal-CmgB8_JK.woff) format("woff");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:Noto Sans Thai;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/noto-sans-thai-latin-ext-600-normal-maHHBsez.woff2) format("woff2"),url(/assets/noto-sans-thai-latin-ext-600-normal-PkMZo0xa.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Noto Sans Thai;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/noto-sans-thai-latin-600-normal-CemcjnVR.woff2) format("woff2"),url(/assets/noto-sans-thai-latin-600-normal-Dbc-dNO6.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Noto Sans Thai;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/noto-sans-thai-thai-700-normal-Cm52XUnT.woff2) format("woff2"),url(/assets/noto-sans-thai-thai-700-normal-C9ISMlQq.woff) format("woff");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:Noto Sans Thai;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/noto-sans-thai-latin-ext-700-normal-uJk63onE.woff2) format("woff2"),url(/assets/noto-sans-thai-latin-ext-700-normal-xdwl2Xg6.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Noto Sans Thai;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/noto-sans-thai-latin-700-normal-_dn-40wb.woff2) format("woff2"),url(/assets/noto-sans-thai-latin-700-normal-C4AMFKt5.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
