@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:200 800;font-display:swap;src:url(/fonts/plus-jakarta-sans-latin.woff2) format("woff2")}:root{color-scheme:light;--bg-primary:#f6f8f7;--bg-surface:#fff;--bg-surface-muted:#edf2f0;--bg-surface-elevated:#fff;--text-primary:#152c2a;--text-secondary:#51625f;--text-muted:#657571;--border-subtle:#dbe4e0;--border-medium:#b8cbc3;--accent-primary:#087f70;--accent-primary-hover:#066557;--accent-primary-light:#e3f3ed;--palette-teal:#087f70;--palette-teal-dark:#087f70;--palette-dark:#152c2a;--palette-mint:#79d9bf;--color-danger:#b33238;--color-danger-bg:#fff0ef;--color-success:#08745a;--shadow-lg:0 18px 70px rgba(8,32,26,.18);--radius-md:10px;--radius-lg:16px}[data-theme=dark]{color-scheme:dark;--bg-primary:#101c20;--bg-surface:#18272b;--bg-surface-muted:#203338;--bg-surface-elevated:#23373b;--text-primary:#e5efeb;--text-secondary:#b1c4be;--text-muted:#9aafa8;--border-subtle:#304449;--border-medium:#516762;--accent-primary:#88dabe;--accent-primary-hover:#b2e9d5;--accent-primary-light:#203d35;--palette-teal:#88dabe;--palette-dark:#e5efeb;--color-danger:#ffb3b3;--color-danger-bg:#42282e;--color-success:#88dabe}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:96px}body{margin:0;background:var(--bg-primary);color:var(--text-primary);font-family:Plus Jakarta Sans,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}a,button,input,textarea{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin:0}h1,h2,h3{line-height:1.25;letter-spacing:-.025em;text-wrap:balance}h1{font-size:28px}h1,h2{font-weight:700}h2{font-size:20px}h3{font-size:15px}svg{flex-shrink:0;vertical-align:middle}fieldset{border:0;padding:0;margin:0;min-width:0}::selection{background:#bdebdc;color:#113c31}input,textarea{caret-color:var(--accent-primary)}:focus-visible{outline:3px solid var(--accent-primary);outline-offset:4px}a{text-underline-offset:4px}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;top:-100px;left:16px;z-index:100;background:var(--bg-surface);padding:12px}.skip-link:focus{top:12px}.brand{display:inline-flex;align-items:center;gap:6px;color:var(--accent-primary);flex-shrink:0}.brand-name{font-size:20px;letter-spacing:-.04em;font-weight:800;color:var(--text-primary)}.brand-name>span{color:var(--accent-primary)}.btn{display:inline-flex;justify-content:center;align-items:center;gap:9px;min-height:44px;padding:10px 17px;border-radius:9px;font-weight:600;font-size:13px;border:1px solid transparent;line-height:1.4;transition:background .18s,color .18s,border-color .18s}.btn-primary{background:var(--accent-primary);color:#fff}[data-theme=dark] .btn-primary{color:#102b23}.btn-primary:hover:not(:disabled){background:var(--accent-primary-hover)}.btn-outline{background:var(--bg-surface);color:var(--text-primary);border-color:var(--border-subtle)}.btn-outline:hover:not(:disabled){background:var(--bg-surface-muted);border-color:var(--border-medium)}.btn-danger{background:#b33238;color:#fff}.btn-danger:hover:not(:disabled){background:#8e242a}.btn-sm{font-size:12px;padding:8px 13px;min-height:40px}.icon-button{display:inline-flex;align-items:center;justify-content:center;min-width:40px;min-height:40px;padding:8px;border:0;border-radius:8px;background:transparent;color:var(--text-secondary);transition:background .18s,color .18s}.icon-button:hover:not(:disabled){background:var(--bg-surface-muted);color:var(--text-primary)}.danger-action:hover{color:var(--color-danger);background:var(--color-danger-bg)}.text-button{border:0;background:transparent;color:var(--accent-primary);padding:8px;font-size:13px;font-weight:600}.text-button:hover{text-decoration:underline}.form-group{display:flex;flex-direction:column;gap:8px;margin-bottom:20px}.form-group label{display:flex;align-items:center;justify-content:space-between;font-weight:600;font-size:13px}.form-group label span{font-weight:400;color:var(--text-muted);font-size:12px}.form-input,.form-textarea{width:100%;min-height:48px;border:1px solid var(--border-medium);border-radius:9px;padding:12px 14px;background:var(--bg-surface);color:var(--text-primary);transition:border-color .18s;line-height:1.5}.form-input::placeholder,.form-textarea::placeholder{color:var(--text-muted);opacity:1}.form-input:focus,.form-textarea:focus{border-color:var(--accent-primary);outline:2px solid var(--accent-primary);outline-offset:2px}.form-textarea{resize:vertical;min-height:100px}.field-hint{font-size:12px;color:var(--text-muted);line-height:1.6}.form-columns{display:grid;grid-template-columns:1fr 1fr;gap:16px}.amount-input,.password-input{position:relative}.password-input input{padding-right:50px}.password-input .icon-button{position:absolute;right:4px;top:4px}.amount-input>span{position:absolute;left:15px;top:12px;color:var(--text-secondary)}.amount-input input{padding-left:32px}.note-count{text-align:right}.notice{display:flex;align-items:flex-start;gap:10px;padding:14px 16px;border-radius:10px;margin-bottom:20px;font-size:13px;line-height:1.6}.notice-error{background:var(--color-danger-bg);color:var(--color-danger)}.notice-success{background:var(--accent-primary-light);color:var(--color-success)}.notice svg{margin-top:2px}.notice .text-button{margin-left:auto;white-space:nowrap;color:inherit;padding:0}.notice-neutral{background:var(--bg-surface-muted);color:var(--text-secondary)}.auth-page{display:grid;grid-template-columns:1fr 1fr;min-height:100dvh}.auth-story{background:#103b35;padding:44px 64px;display:flex;flex-direction:column;justify-content:space-between;gap:56px}.auth-story,.auth-story .brand-name{color:#f0faf7}.auth-story .brand-name>span{color:#8bddc1}.auth-story-content{max-width:480px;width:100%;margin:auto}.auth-story h1{font-size:42px;line-height:1.2;letter-spacing:-.035em}.auth-story h1 span{color:#9bdfc8}.auth-story-content>p{font-size:15px;color:#c3ded5;max-width:44ch;margin-top:22px;line-height:1.8}.ledger-preview{margin-top:44px;border-top:1px solid #55786c;border-bottom:1px solid #55786c}.preview-heading{padding:22px 0;color:#b4e4d4;font-size:13px;font-weight:600}.preview-heading,.preview-row{display:flex;align-items:center;justify-content:space-between}.preview-row{padding:18px 0;border-top:1px solid #365b50;gap:16px}.preview-row>div{display:flex;flex-direction:column;gap:3px}.preview-row strong{font-size:14px;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.preview-row span{font-size:12px;color:#b4d3c7}.preview-caption{font-size:11px!important;color:#b4d3c7;padding:16px 0}.story-footer{font-size:12px;color:#bad7cc}.auth-form-panel{background:var(--bg-surface);display:flex;flex-direction:column;padding:32px 64px;min-width:0}.auth-topbar{display:flex;align-items:center;justify-content:flex-end;min-height:44px}.mobile-brand{display:none}.auth-form-content{width:100%;max-width:390px;margin:auto;padding:42px 0}.auth-form-content h2{font-size:26px}.auth-subtitle{color:var(--text-secondary);margin-top:10px;font-size:13px}.auth-tabs{display:flex;border-bottom:1px solid var(--border-subtle);margin:32px 0 26px;gap:24px}.auth-tabs button{background:none;border:0;border-bottom:2px solid transparent;padding:0 2px 13px;min-height:44px;font-weight:600;color:var(--text-muted)}.auth-tabs .selected{border-bottom-color:var(--accent-primary);color:var(--accent-primary)}.auth-submit{width:100%;justify-content:space-between;margin-top:6px;min-height:48px}.demo-section{margin-top:25px;border-top:1px solid var(--border-subtle);padding-top:18px;text-align:center}.demo-section p{margin-top:4px}.auth-footer,.demo-section p{font-size:11px;color:var(--text-muted)}.auth-footer{text-align:center}.password-rules{display:flex;gap:7px 14px;flex-wrap:wrap;margin-top:3px}.password-rules span{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--text-muted)}.password-rules .met{color:var(--color-success)}.app-header{border-bottom:1px solid var(--border-subtle);background:var(--bg-surface)}.header-inner{max-width:1256px;margin:auto;padding:18px 40px;gap:40px;min-height:80px}.app-nav,.header-inner{display:flex;align-items:center}.app-nav{gap:25px;align-self:stretch}.app-nav a{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-secondary);border-bottom:2px solid transparent}.app-nav a.active{color:var(--accent-primary);border-bottom-color:var(--accent-primary);font-weight:600}.header-actions{margin-left:auto;gap:9px}.avatar,.header-actions{display:flex;align-items:center}.avatar{justify-content:center;width:34px;height:34px;background:var(--accent-primary-light);color:var(--accent-primary);font-size:13px;font-weight:700;border-radius:50%;margin-left:8px}.signout-label{font-size:12px}.page-container{max-width:1256px;padding:40px 40px 64px;margin:auto}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:30px}.page-heading h1{font-size:27px}.page-heading p{margin-top:7px;color:var(--text-secondary);font-size:13px}.page-actions{display:flex;gap:10px;flex-shrink:0}.overview-stats{display:grid;grid-template-columns:1.08fr 1.45fr;gap:36px;margin-bottom:32px;align-items:stretch}.total-spent{background:#122c32;color:#fff;border-radius:16px;padding:28px;position:relative;min-width:0;overflow:hidden}.stat-label{color:#bbd6cf;font-size:12px;font-weight:500}.total-number{font-size:38px;letter-spacing:-.03em;font-weight:600;line-height:1.2;margin:14px 0 20px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.stat-caption{font-size:11px;color:#bfd9d2;display:flex;gap:8px;flex-wrap:wrap}.byte-corner{position:absolute;right:-3px;top:-3px;width:56px;height:56px;pointer-events:none}.supporting-stats{margin:0;display:flex;flex-wrap:wrap;align-items:center}.supporting-stats>div{width:50%;padding:14px 24px;border-left:1px solid var(--border-subtle)}.supporting-stats>div:first-child{width:100%;padding-bottom:22px}.supporting-stats dt{font-size:12px;color:var(--text-secondary);margin-bottom:6px}.supporting-stats dd{font-size:25px;font-weight:600;line-height:1.3;margin:0;letter-spacing:-.025em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.supporting-stats p{font-size:10px;color:var(--text-muted);margin-top:6px}.trend-section{display:grid;grid-template-columns:200px 1fr;gap:36px;border-bottom:1px solid var(--border-subtle);padding:4px 0 30px;margin-bottom:32px}.trend-heading h2{font-size:16px}.trend-heading p{color:var(--text-muted);font-size:12px;margin-top:7px}.monthly-chart{display:flex;align-items:flex-end;gap:24px;height:130px}.month-column{flex:1 1;min-width:0;text-align:center}.month-value{font-size:10px;color:var(--text-muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;display:block;margin-bottom:7px}.month-track{height:74px;display:flex;align-items:flex-end;justify-content:center}.month-bar{width:100%;max-width:64px;border-radius:4px 4px 0 0;background:#cfdfd7;min-height:2px}[data-theme=dark] .month-bar{background:#34534a}.month-column.current .month-bar{background:var(--accent-primary)}.month-label{display:block;font-size:11px;color:var(--text-secondary);margin-top:9px}.month-column.current .month-label{font-weight:700;color:var(--accent-primary)}.section-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.section-heading h2{display:flex;align-items:center;gap:10px;font-size:20px}.section-heading p{font-size:12px;color:var(--text-secondary);margin-top:6px}.count-tag{font-size:11px;line-height:1;padding:6px 8px;background:var(--bg-surface-muted);color:var(--text-secondary);border-radius:6px;letter-spacing:0}.expense-toolbar{gap:24px;justify-content:space-between;margin-bottom:20px}.expense-toolbar,.search-field{display:flex;align-items:center}.search-field{gap:11px;max-width:400px;flex:1 1;min-width:0;padding:0 12px;border:1px solid var(--border-subtle);border-radius:9px;background:var(--bg-surface);color:var(--text-muted);min-height:46px}.search-field input{border:0;background:transparent;color:var(--text-primary);font-size:12px;min-width:0;width:100%;padding:12px 0}.search-field input::placeholder{color:var(--text-muted)}.search-field:focus-within{outline:2px solid var(--accent-primary);outline-offset:2px}.search-field input:focus-visible{outline:0}.search-field .icon-button{min-height:30px;min-width:30px;padding:4px}.sort-controls{display:flex;align-items:center;gap:4px}.sort-controls>span{font-size:11px;color:var(--text-secondary);margin-right:6px}.sort-button{display:flex;align-items:center;gap:7px;padding:8px 10px;min-height:38px;background:transparent;border:1px solid transparent;border-radius:7px;color:var(--text-secondary);font-size:12px}.sort-button:hover{background:var(--bg-surface-muted)}.sort-button.selected{background:var(--bg-surface);border-color:var(--border-subtle);color:var(--text-primary);font-weight:600}.expense-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.expense-card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:14px;padding:17px 20px 20px;min-width:0;transition:border-color .18s}.expense-card:hover{border-color:var(--border-medium)}.expense-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:13px}.expense-mark{color:var(--accent-primary);display:flex;align-items:center}.expense-actions{display:flex;gap:2px;margin-right:-7px}.expense-actions .icon-button{min-height:34px;min-width:34px;color:var(--text-muted)}.expense-card h3{font-size:14px;line-height:1.5;font-weight:600}.expense-card h3,.expense-note{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.expense-note{font-size:11px;color:var(--text-muted);margin-top:3px}.expense-card-bottom{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-top:22px;flex-wrap:wrap}.expense-card-bottom strong{font-size:20px;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:-.025em;overflow-wrap:anywhere}.expense-card time{font-size:10px;color:var(--text-secondary)}.pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:24px;font-size:11px;color:var(--text-secondary)}.pagination-buttons{display:flex;gap:8px;align-items:center}.page-number{padding:0 10px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.empty-state{text-align:center;border:1px dashed var(--border-medium);border-radius:14px;padding:44px 24px;color:var(--text-secondary)}.empty-state>svg{color:var(--accent-primary);margin-bottom:16px}.empty-state h3{color:var(--text-primary);font-size:19px}.empty-state p{margin:10px auto 20px;max-width:40ch;font-size:13px}.page-footer{display:flex;align-items:center;justify-content:space-between;color:var(--text-muted);border-top:1px solid var(--border-subtle);margin-top:40px;padding-top:20px}.page-footer,.page-footer button{font-size:11px}.mobile-add{display:none}.app-dialog{padding:28px;border:0;border-radius:16px;max-width:500px;width:calc(100% - 32px);max-height:calc(100dvh - 40px);overflow:auto;background:var(--bg-surface);color:var(--text-primary);box-shadow:var(--shadow-lg);margin:auto}.app-dialog::backdrop{background:rgba(7,24,23,.55)}.dialog-heading{display:flex;gap:16px;justify-content:space-between;align-items:flex-start;margin-bottom:28px}.dialog-heading h2{font-size:22px}.dialog-heading p{font-size:12px;color:var(--text-secondary);margin-top:7px;max-width:40ch}.dialog-heading .icon-button{margin:-8px -9px 0 0}.dialog-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:24px;padding-top:20px;border-top:1px solid var(--border-subtle)}.delete-summary{display:flex;justify-content:space-between;gap:20px;overflow-wrap:anywhere;padding:18px 0}.delete-summary strong{white-space:nowrap}.security-settings h3{margin-bottom:16px}.security-settings dl{margin:0 0 24px}.security-settings dl>div{padding:14px 0;border-bottom:1px solid var(--border-subtle)}.security-settings dt{color:var(--text-secondary);font-size:12px;margin-bottom:3px}.security-settings dd{margin:0;font-size:13px}.skeleton{background:var(--bg-surface-muted);border-radius:10px;animation:pulse 1.8s ease-in-out infinite}.skeleton-heading{height:32px;width:240px;max-width:100%;margin:0 0 28px}.skeleton-summary{height:180px;margin-bottom:28px}.skeleton-toolbar{height:44px;margin-bottom:20px}.skeleton-card{height:182px}.loading-page{min-height:100dvh;display:grid;place-content:center;text-align:center;gap:16px}.loading-page p{color:var(--text-secondary);font-size:13px}.loading-line{height:3px;width:120px;background:var(--accent-primary);margin:auto;border-radius:3px;animation:pulse 1.8s ease-in-out infinite}@keyframes pulse{50%{opacity:.5}}@media(min-width:1600px){.auth-story{padding:56px 84px}.auth-form-panel{padding:40px 84px}}@media(max-width:1050px){.header-inner{gap:25px;padding:16px 28px}.page-container{padding:32px 28px 48px}.auth-story{padding:36px}.auth-story h1{font-size:35px}.auth-form-panel{padding:26px 36px}.auth-form-content h2{font-size:23px}.overview-stats{gap:24px}.supporting-stats>div{padding-left:18px}.supporting-stats dd{font-size:22px}.expense-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.total-number{font-size:34px}.signout-label{display:none}}@media(max-width:760px){.auth-page{grid-template-columns:1fr}.auth-story{display:none}.auth-form-panel{min-height:100dvh;padding:20px 24px 26px}.auth-topbar{justify-content:space-between}.mobile-brand{display:block}.auth-form-content{padding:42px 0}.auth-form-content h2{font-size:25px}.header-inner{padding:12px 20px;gap:14px;min-height:68px}.app-nav{display:none}.header-actions{gap:3px}.header-actions .avatar{display:none}.brand-name{font-size:18px}.page-container{padding:28px 20px 40px}.page-heading{align-items:flex-start;margin-bottom:24px}.page-heading h1{font-size:24px}.page-heading p{font-size:12px;max-width:28ch}.page-actions .btn-primary{display:none}.page-actions .btn-outline{padding:8px 10px;font-size:12px;min-height:40px}.overview-stats{grid-template-columns:1fr;gap:16px;margin-bottom:26px}.total-spent{padding:24px}.total-number{font-size:36px;margin:12px 0 16px}.supporting-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 12px;padding:6px 0}.supporting-stats>div,.supporting-stats>div:first-child{width:auto;padding:0 0 0 12px}.supporting-stats>div:first-child{grid-column:1/-1;border-left:0;padding-left:0}.supporting-stats>div:nth-child(2){border-left:0;padding-left:0}.supporting-stats dt{font-size:11px}.supporting-stats dd{font-size:18px}.supporting-stats p{display:none}.trend-section{grid-template-columns:1fr;gap:16px;padding-bottom:24px;margin-bottom:26px}.trend-heading{display:flex;justify-content:space-between;gap:12px;align-items:center}.trend-heading h2{font-size:15px}.trend-heading p{margin:0;font-size:10px}.monthly-chart{height:112px;gap:18px}.month-track{height:65px}.expense-toolbar{flex-direction:column;align-items:stretch;gap:12px}.search-field{max-width:none;width:100%}.sort-controls{justify-content:flex-start}.expense-grid{gap:12px}.expense-card{padding:12px 14px 15px}.expense-card-bottom{margin-top:17px;gap:4px;flex-direction:column}.expense-card-bottom strong{font-size:19px}.expense-card h3{font-size:13px;white-space:normal;overflow-wrap:anywhere}.expense-actions .icon-button{min-height:44px;min-width:44px}.expense-mark{display:none}.expense-card-top{justify-content:flex-end;margin-bottom:5px;margin-top:-4px}.pagination{flex-wrap:wrap;justify-content:center}.pagination>span{width:100%;text-align:center}.page-footer{margin-bottom:60px;gap:12px}.mobile-add{position:fixed;bottom:calc(20px + env(safe-area-inset-bottom));right:20px;display:inline-flex;box-shadow:0 6px 20px rgba(6,55,39,.2);z-index:10;border-radius:12px;min-height:48px}.form-input,.form-textarea{font-size:16px}.app-dialog{padding:24px 20px}.dialog-heading h2{font-size:21px}.form-columns{gap:12px}.dialog-actions .btn{flex:1 1;padding:10px 12px}}@media(max-width:370px){.header-inner,.page-container{padding-left:16px;padding-right:16px}.brand-name{font-size:16px}.expense-grid{grid-template-columns:1fr}.expense-mark{display:flex}.expense-card-top{justify-content:space-between}.supporting-stats dd{font-size:16px}.form-columns{grid-template-columns:1fr;gap:0}.auth-form-panel{padding-left:20px;padding-right:20px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{animation:none!important;transition:none!important}}