:root{--green: #1e6b4e;--green-dark: #14503a;--green-soft: #e3f0ea;--paper: #f7f5f0;--card: #ffffff;--ink: #1f2a24;--ink-soft: #66756d;--line: #e5e1d8;--red: #c0392b;--amber: #b7791f;--radius: 14px;--radius-sm: 10px;--shadow: 0 1px 3px rgba(31, 42, 36, .08), 0 4px 16px rgba(31, 42, 36, .06);--shadow-sheet: 0 -8px 32px rgba(31, 42, 36, .18);--nav-height: 60px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--paper);color:var(--ink);font-family:Noto Sans Thai,Sarabun,system-ui,-apple-system,Segoe UI,sans-serif;font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:3px solid var(--green);outline-offset:2px;border-radius:4px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.app{max-width:640px;margin:0 auto;min-height:100dvh}.page{padding:16px 16px calc(var(--nav-height) + 24px + env(safe-area-inset-bottom))}.page-title{font-size:1.35rem;font-weight:700;margin:4px 0 16px}.splash{min-height:100dvh;display:grid;place-items:center;color:var(--ink-soft)}.bottom-nav{position:fixed;bottom:0;left:0;right:0;margin:0 auto;max-width:640px;height:calc(var(--nav-height) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--card);border-top:1px solid var(--line);display:flex;z-index:20}.bottom-nav a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;text-decoration:none;color:var(--ink-soft);font-size:.72rem}.bottom-nav a.active{color:var(--green);font-weight:600}.login{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;gap:8px}.login-logo{font-size:3rem}.login h1{margin:0;color:var(--green)}.login p{margin:0 0 16px;color:var(--ink-soft)}.login form{width:100%;max-width:320px;display:flex;flex-direction:column;gap:12px}.login-divider{margin-top:16px;color:var(--ink-soft);font-size:.85rem;display:flex;align-items:center;gap:10px;width:100%;max-width:320px}.login-divider:before,.login-divider:after{content:"";flex:1;height:1px;background:var(--line)}.google-btn{min-height:44px;display:flex;justify-content:center}.field{display:flex;flex-direction:column;gap:4px}.field label{font-size:.85rem;color:var(--ink-soft)}.input{width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--card)}.input:focus{border-color:var(--green);outline:none}.btn{border:none;border-radius:var(--radius-sm);padding:12px 18px;font-weight:600;background:var(--green-soft);color:var(--green-dark);transition:filter .15s ease}.btn:hover{filter:brightness(.97)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--green);color:#fff}.btn-danger{background:transparent;color:var(--red)}.btn-ghost{background:transparent;color:var(--ink-soft)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;border:none;border-radius:50%;background:var(--green-soft);color:var(--green-dark);flex-shrink:0}.icon-btn.recording{background:var(--red);color:#fff;animation:pulse 1.2s ease-in-out infinite}@keyframes pulse{0%,to{box-shadow:0 0 #c0392b66}50%{box-shadow:0 0 0 10px #c0392b00}}.capture-bar{display:flex;gap:8px;align-items:center}.capture-bar .input{flex:1}.capture-actions{display:flex;gap:8px;margin-top:10px;align-items:center}.notice{margin-top:12px;padding:10px 14px;border-radius:var(--radius-sm);background:#fdf3e3;color:var(--amber);font-size:.9rem}.notice.error{background:#fbeae8;color:var(--red)}.parsing{margin-top:12px;color:var(--ink-soft);font-size:.9rem}.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;margin-top:16px}.card h2{margin:0 0 10px;font-size:1rem}.day-head{display:flex;justify-content:space-between;align-items:baseline;margin:18px 4px 6px;font-size:.85rem;color:var(--ink-soft)}.day-head .day-total{font-weight:600;color:var(--ink)}.expense-row{display:flex;align-items:center;gap:12px;width:100%;padding:12px 14px;border:none;border-bottom:1px solid var(--line);background:var(--card);text-align:left}.expense-row:first-of-type{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.expense-row:last-of-type{border-bottom:none;border-bottom-left-radius:var(--radius);border-bottom-right-radius:var(--radius)}.row-group{border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.cat-dot{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;font-size:1.15rem;flex-shrink:0}.expense-main{flex:1;min-width:0}.expense-main .title{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.expense-main .sub{font-size:.8rem;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.expense-amount{font-weight:700;white-space:nowrap}.empty{text-align:center;color:var(--ink-soft);padding:32px 16px}.empty .big{font-size:2.2rem;display:block;margin-bottom:8px}.chips{display:flex;gap:8px;overflow-x:auto;padding:4px 0 8px;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}.chip{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:6px 14px;font-size:.85rem;white-space:nowrap}.chip.active{background:var(--green);border-color:var(--green);color:#fff}.month-nav{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px}.month-nav .label{font-weight:700;font-size:1.05rem}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1f2a2473;z-index:30;display:flex;align-items:flex-end;justify-content:center}.sheet{background:var(--card);border-radius:var(--radius) var(--radius) 0 0;box-shadow:var(--shadow-sheet);width:100%;max-width:640px;max-height:90dvh;overflow-y:auto;padding:20px 16px calc(20px + env(safe-area-inset-bottom));animation:sheet-in .22s ease-out}@keyframes sheet-in{0%{transform:translateY(24px);opacity:.6}to{transform:translateY(0);opacity:1}}.sheet-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.sheet-head h2{margin:0;font-size:1.1rem}.sheet form{display:flex;flex-direction:column;gap:12px}.amount-input{font-size:1.6rem;font-weight:700;text-align:center}.form-error{color:var(--red);font-size:.85rem}.sheet-actions{display:flex;gap:8px;margin-top:4px}.sheet-actions .btn-primary{flex:1}.receipt-thumb{width:72px;height:72px;object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--line)}.receipt-items{border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 12px;font-size:.85rem;color:var(--ink-soft);max-height:140px;overflow-y:auto}.receipt-items div{display:flex;justify-content:space-between;gap:8px}.cat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.cat-option{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--card);padding:8px 10px;font-size:.82rem;text-align:left}.cat-option .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cat-option.selected{border-color:var(--green);background:var(--green-soft);font-weight:600}.stat-card{background:var(--green);color:#fff;border-radius:var(--radius);padding:18px;margin-top:12px}.stat-card .label{font-size:.85rem;opacity:.85}.stat-card .value{font-size:2rem;font-weight:700;line-height:1.2}.stat-card .mom{font-size:.85rem;margin-top:4px;opacity:.9}.legend{display:flex;flex-direction:column;gap:8px;margin-top:12px}.legend-row{display:flex;align-items:center;gap:10px;font-size:.9rem}.legend-swatch{width:12px;height:12px;border-radius:3px;flex-shrink:0}.legend-row .name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.legend-row .share{color:var(--ink-soft);font-size:.8rem;width:44px;text-align:right}.legend-row .total{font-weight:600;width:90px;text-align:right}.merchant-row{display:flex;justify-content:space-between;align-items:baseline;gap:8px;padding:8px 0;border-bottom:1px solid var(--line);font-size:.92rem}.merchant-row:last-child{border-bottom:none}.merchant-row .count{color:var(--ink-soft);font-size:.8rem}
