.m-header{background:var(--header);justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.m-header__title{color:var(--primary-text);margin:0;font-size:18px;font-weight:600}.m-header__right{color:var(--primary-text);align-items:center;gap:10px;font-size:13px;display:flex}.m-tabbar{background:var(--surface);border-top:.5px solid var(--border);justify-content:space-around;padding:8px 0;display:flex;position:fixed;bottom:0;left:0;right:0}.m-tabbar a{text-align:center;color:var(--text-muted);flex:1;padding:4px 0;font-size:12px;text-decoration:none}.m-tabbar a.active{color:var(--primary-text);font-weight:600}.m-main{max-width:520px;margin:0 auto;padding:16px 16px 72px}.d-shell{min-height:100vh;display:flex}.d-side{background:var(--header);flex-direction:column;justify-content:space-between;width:220px;padding:20px 16px;display:flex}.d-side__brand{color:var(--primary-text);font-size:20px;font-weight:700}.d-side__user{color:var(--primary-text);font-size:13px}.d-side__user b{margin-bottom:8px;font-weight:500;display:block}.d-main{flex:1}.d-main__inner{max-width:880px;margin:0 auto;padding:28px 32px}.d-side__nav{flex-direction:column;gap:4px;margin-top:24px;display:flex}.d-side__nav a{color:var(--primary-text);border-radius:8px;padding:8px 10px;font-size:14px;text-decoration:none}.d-side__nav a.active{background:var(--surface);font-weight:600}.d-side__top{flex:1}.logout-btn{background:var(--surface);border:.5px solid var(--border);color:var(--primary-text);cursor:pointer;border-radius:20px;padding:6px 12px;font-size:12px}.cat-form{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.cat-form input,.cat-form select{border:.5px solid var(--border);background:var(--bg);height:40px;color:var(--text);border-radius:10px;padding:0 10px;font-size:14px}.cat-form input{flex:1;min-width:120px}.cat-form button{background:var(--primary);height:40px;color:var(--primary-text);cursor:pointer;border:none;border-radius:20px;padding:0 16px;font-weight:600}.cat-form .cancel{background:var(--surface);border:.5px solid var(--border);color:var(--text)}.cat-error{background:var(--chip-pink);color:var(--expense-strong);border-radius:10px;margin-bottom:12px;padding:10px 12px;font-size:13px}.cat-row{background:var(--surface);border:.5px solid var(--border);border-radius:var(--radius);align-items:center;gap:10px;margin-bottom:8px;padding:12px;display:flex}.cat-row__name{color:var(--text);flex:1;font-weight:600}.cat-badge{border-radius:12px;padding:3px 9px;font-size:11px;font-weight:600}.cat-badge--income{background:var(--income);color:var(--income-strong)}.cat-badge--expense{background:var(--expense);color:var(--expense-strong)}.cat-row button{color:var(--text-muted);cursor:pointer;background:0 0;border:none;font-size:12px}.cat-empty{color:var(--text-muted);padding:16px 0;font-size:14px}.cat-title{color:var(--text);margin:0 0 16px;font-size:20px;font-weight:600}.dash-greet{color:var(--text-muted);margin:0 0 16px;font-size:14px}.balance-card{background:var(--surface);border:.5px solid var(--border);border-radius:var(--radius);margin-bottom:12px;padding:18px}.balance-card__label{color:var(--text-muted);font-size:13px}.balance-card__value{color:var(--text);margin-top:4px;font-size:26px;font-weight:700}.sum-cards{gap:10px;display:flex}.sum-card{border-radius:var(--radius);flex:1;padding:14px}.sum-card--income{background:var(--income)}.sum-card--expense{background:var(--expense)}.sum-card__label{font-size:12px;font-weight:500}.sum-card--income .sum-card__label{color:var(--income-strong)}.sum-card--expense .sum-card__label{color:var(--expense-strong)}.sum-card__value{margin-top:4px;font-size:18px;font-weight:700}.sum-card--income .sum-card__value{color:var(--income-strong)}.sum-card--expense .sum-card__value{color:var(--expense-strong)}.dash-msg{color:var(--text-muted);padding:16px 0;font-size:14px}.dash-d-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}.dash-d-grid .balance-card{grid-column:1/-1;margin-bottom:0}.dash-section{margin-top:20px}.dash-section-title{color:var(--text);margin:0 0 10px;font-size:14px;font-weight:600}.dash-section-empty{color:var(--text-muted);padding:8px 0;font-size:13px}.cbar{align-items:center;gap:8px;margin-bottom:8px;display:flex}.cbar__name{width:64px;color:var(--text);flex-shrink:0;font-size:12px}.cbar__track{background:var(--chip-pink);border-radius:6px;flex:1;height:10px;overflow:hidden}.cbar__fill{background:var(--expense);height:100%;display:block}.cbar__amt{text-align:right;width:72px;color:var(--expense-strong);flex-shrink:0;font-size:12px;font-weight:600}.rrow{border-bottom:.5px solid var(--border);align-items:center;gap:8px;padding:8px 0;display:flex}.rrow:last-child{border-bottom:none}.rrow__main{flex:1;min-width:0}.rrow__cat{color:var(--text);font-size:13px;display:block}.rrow__meta{color:var(--text-muted);font-size:11px;display:block}.rrow__amt{white-space:nowrap;font-size:13px;font-weight:600}.rrow__amt--income{color:var(--income-strong)}.rrow__amt--expense{color:var(--expense-strong)}.field{margin-bottom:12px;display:block}.field span{color:var(--text);margin-bottom:5px;font-size:13px;display:block}.field input{border:.5px solid var(--border);background:var(--bg);width:100%;height:44px;color:var(--text);border-radius:10px;padding:0 12px;font-size:15px}.field input:focus{border-color:var(--primary);outline:none}.submit-btn{background:var(--primary);width:100%;height:46px;color:var(--primary-text);cursor:pointer;border:none;border-radius:23px;margin-top:8px;font-size:15px;font-weight:500}.submit-btn:disabled{opacity:.6;cursor:default}.form-error{background:var(--chip-pink);color:var(--expense-strong);border-radius:10px;margin-bottom:12px;padding:10px 12px;font-size:13px}.form-foot{text-align:center;color:var(--text-muted);margin-top:16px;font-size:13px}.form-foot a{color:var(--primary-text)}.form-title{color:var(--text);margin:0 0 4px;font-size:22px;font-weight:600}.form-sub{color:var(--text-muted);margin:0 0 20px;font-size:13px}.auth-mobile{max-width:420px;margin:0 auto;padding:40px 20px}.auth-desktop{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.auth-desktop__card{background:var(--surface);border:.5px solid var(--border);border-radius:16px;width:720px;max-width:100%;display:flex;overflow:hidden}.auth-desktop__brand{background:var(--header);flex-direction:column;justify-content:center;width:280px;padding:40px 28px;display:flex}.auth-desktop__brand h2{color:var(--primary-text);margin:0 0 8px;font-size:26px;font-weight:700}.auth-desktop__brand p{color:var(--primary-text);margin:0;font-size:14px;line-height:1.6}.auth-desktop__form{flex:1;padding:40px 36px}.tx-monthnav{justify-content:center;align-items:center;gap:16px;margin-bottom:16px;display:flex}.tx-monthnav button{background:var(--surface);border:.5px solid var(--border);color:var(--primary-text);cursor:pointer;border-radius:16px;width:32px;height:32px;font-size:14px}.tx-monthnav span{color:var(--text);text-align:center;min-width:110px;font-size:16px;font-weight:600}.tx-error{background:var(--chip-pink);color:var(--expense-strong);border-radius:10px;margin-bottom:12px;padding:10px 12px;font-size:13px}.tx-empty{color:var(--text-muted);text-align:center;padding:24px 0;font-size:14px}.tx-row{background:var(--surface);border:.5px solid var(--border);border-radius:var(--radius);align-items:center;gap:10px;margin-bottom:8px;padding:12px;display:flex}.tx-row__date{color:var(--text-muted);width:44px;font-size:12px}.tx-row__main{flex:1;min-width:0}.tx-row__cat{color:var(--text);font-size:14px;font-weight:600;display:block}.tx-row__meta{color:var(--text-muted);margin-top:2px;font-size:11px;display:block}.tx-row__amount{white-space:nowrap;font-size:15px;font-weight:700}.tx-row__amount--income{color:var(--income-strong)}.tx-row__amount--expense{color:var(--expense-strong)}.tx-row__btns button{color:var(--text-muted);cursor:pointer;background:0 0;border:none;font-size:12px}.tx-addbtn{background:var(--primary);width:100%;height:44px;color:var(--primary-text);cursor:pointer;border:none;border-radius:22px;margin-bottom:16px;font-size:15px;font-weight:600;display:block}.tx-title{color:var(--text);margin:0 0 16px;font-size:20px;font-weight:600}.tx-form{background:var(--surface);border:.5px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:10px;margin-bottom:16px;padding:16px;display:flex}.tx-form label{color:var(--text);flex-direction:column;gap:4px;font-size:13px;display:flex}.tx-form input,.tx-form select{border:.5px solid var(--border);background:var(--bg);height:40px;color:var(--text);border-radius:10px;padding:0 10px;font-size:14px}.tx-form__btns{gap:8px;display:flex}.tx-form__btns button{cursor:pointer;border:none;border-radius:21px;flex:1;height:42px;font-size:14px;font-weight:600}.tx-form__save{background:var(--primary);color:var(--primary-text)}.tx-form__cancel{background:var(--bg);border:.5px solid var(--border);color:var(--text)}.tx-filterbtn{border:.5px solid var(--border);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:16px;margin-bottom:12px;padding:6px 12px;font-size:12px}.tx-filter{background:var(--surface);border:.5px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:8px;margin-bottom:12px;padding:12px;display:flex}.tx-filter label{color:var(--text-muted);flex-direction:column;gap:3px;font-size:12px;display:flex}.tx-filter select,.tx-filter input{border:.5px solid var(--border);background:var(--bg);height:36px;color:var(--text);border-radius:9px;padding:0 10px;font-size:14px}.tx-filter__amts{gap:8px;display:flex}.tx-filter__amts label{flex:1}.tx-filter__actions{gap:8px;display:flex}.tx-filter__reset{background:var(--bg);border:.5px solid var(--border);color:var(--text);cursor:pointer;border-radius:16px;padding:6px 12px;font-size:12px}.tx-exportbtn{background:var(--chip);border:.5px solid var(--border);color:var(--text);cursor:pointer;border-radius:16px;margin-bottom:12px;margin-left:8px;padding:6px 12px;font-size:12px}.tx-daybanner{background:var(--chip-pink);color:var(--text);border-radius:10px;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;padding:8px 12px;font-size:13px;display:flex}.tx-daybanner button{background:var(--surface);border:.5px solid var(--border);color:var(--primary-text);cursor:pointer;border-radius:14px;padding:4px 10px;font-size:12px}.cal-grid{grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:16px;display:grid}.cal-wh{text-align:center;color:var(--text-muted);padding:4px 0;font-size:12px;font-weight:600}.cal-cell{font:inherit;background:var(--surface);border:.5px solid var(--border);cursor:pointer;border-radius:8px;flex-direction:column;align-items:center;gap:2px;min-height:62px;padding:5px 2px;display:flex;overflow:hidden}.cal-cell--empty{cursor:default;background:0 0;border:none}.cal-cell--selected{border:1.5px solid var(--primary);background:var(--chip-pink)}.cal-day{color:var(--text);font-size:13px;font-weight:600}.cal-inc{text-overflow:ellipsis;max-width:100%;color:var(--income-strong);white-space:nowrap;font-size:10px;font-weight:700;overflow:hidden}.cal-exp{text-overflow:ellipsis;max-width:100%;color:var(--expense-strong);white-space:nowrap;font-size:10px;font-weight:700;overflow:hidden}.cal-sun{color:var(--sun)}.cal-sat{color:var(--sat)}.stl-monthnav{justify-content:center;align-items:center;gap:16px;margin-bottom:16px;display:flex}.stl-monthnav button{background:var(--surface);border:.5px solid var(--border);color:var(--primary-text);cursor:pointer;border-radius:16px;width:32px;height:32px}.stl-monthnav span{color:var(--text);text-align:center;min-width:110px;font-size:16px;font-weight:600}.stl-title{color:var(--text);margin:0 0 16px;font-size:20px;font-weight:600}.stl-result{background:var(--header);border-radius:var(--radius);text-align:center;margin-bottom:16px;padding:20px}.stl-result__amt{color:var(--primary-text);font-size:24px;font-weight:700}.stl-result__dir{color:var(--primary-text);margin-bottom:6px;font-size:14px}.stl-none{background:var(--surface);border:.5px solid var(--border);border-radius:var(--radius);text-align:center;color:var(--text-muted);margin-bottom:16px;padding:20px;font-size:14px}.stl-users{gap:10px;display:flex}.stl-user{background:var(--surface);border:.5px solid var(--border);border-radius:var(--radius);flex:1;padding:14px}.stl-user__name{color:var(--text-muted);font-size:13px}.stl-user__paid{color:var(--text);margin-top:4px;font-size:16px;font-weight:700}.stl-total{color:var(--text-muted);margin:14px 0 6px;font-size:13px}.stl-msg{color:var(--text-muted);padding:16px 0;font-size:14px}.bdg-title{color:var(--text);margin:0 0 16px;font-size:20px;font-weight:600}.bdg-error{background:var(--chip-pink);color:var(--expense-strong);border-radius:10px;margin-bottom:12px;padding:10px 12px;font-size:13px}.bdg-empty{color:var(--text-muted);padding:16px 0;font-size:14px}.bdg-row{background:var(--surface);border:.5px solid var(--border);border-radius:var(--radius);margin-bottom:10px;padding:14px}.bdg-row__head{justify-content:space-between;align-items:baseline;margin-bottom:8px;display:flex}.bdg-row__name{color:var(--text);font-size:15px;font-weight:600}.bdg-row__spent{color:var(--text-muted);font-size:12px}.bdg-row__over{color:var(--expense-strong);font-weight:600}.bdg-bar{background:var(--chip-pink);border-radius:5px;height:8px;margin-bottom:10px;overflow:hidden}.bdg-bar__fill{background:var(--expense);height:100%;display:block}.bdg-form{gap:8px;display:flex}.bdg-form input{border:.5px solid var(--border);background:var(--bg);height:38px;color:var(--text);border-radius:9px;flex:1;padding:0 10px;font-size:14px}.bdg-form button{cursor:pointer;border:none;border-radius:19px;height:38px;padding:0 14px;font-size:13px;font-weight:600}.bdg-form .save{background:var(--primary);color:var(--primary-text)}.bdg-form .del{background:var(--bg);border:.5px solid var(--border);color:var(--text-muted)}.rec-title{color:var(--text);margin:0 0 16px;font-size:20px;font-weight:600}.rec-error{background:var(--chip-pink);color:var(--expense-strong);border-radius:10px;margin-bottom:12px;padding:10px 12px;font-size:13px}.rec-applied{background:var(--income);color:var(--income-strong);border-radius:10px;margin-bottom:12px;padding:10px 12px;font-size:13px}.rec-apply-btn{background:var(--header);width:100%;height:42px;color:var(--primary-text);cursor:pointer;border:none;border-radius:21px;margin-bottom:14px;font-size:14px;font-weight:600}.rec-addbtn{background:var(--primary);width:100%;height:44px;color:var(--primary-text);cursor:pointer;border:none;border-radius:22px;margin-bottom:14px;font-size:15px;font-weight:600}.rec-row{background:var(--surface);border:.5px solid var(--border);border-radius:var(--radius);align-items:center;gap:10px;margin-bottom:8px;padding:12px;display:flex}.rec-row__main{flex:1;min-width:0}.rec-row__cat{color:var(--text);font-size:14px;font-weight:600;display:block}.rec-row__meta{color:var(--text-muted);font-size:11px;display:block}.rec-row__amt{color:var(--expense-strong);white-space:nowrap;font-size:15px;font-weight:700}.rec-row__amt--income{color:var(--income-strong)}.rec-row__btns button{color:var(--text-muted);cursor:pointer;background:0 0;border:none;font-size:12px}.rec-empty{color:var(--text-muted);text-align:center;padding:24px 0;font-size:14px}.rec-form{background:var(--surface);border:.5px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:10px;margin-bottom:16px;padding:16px;display:flex}.rec-form label{color:var(--text);flex-direction:column;gap:4px;font-size:13px;display:flex}.rec-form input,.rec-form select{border:.5px solid var(--border);background:var(--bg);height:40px;color:var(--text);border-radius:10px;padding:0 10px;font-size:14px}.rec-form__btns{gap:8px;display:flex}.rec-form__btns button{cursor:pointer;border:none;border-radius:21px;flex:1;height:42px;font-size:14px;font-weight:600}.rec-form__save{background:var(--primary);color:var(--primary-text)}.rec-form__cancel{background:var(--bg);border:.5px solid var(--border);color:var(--text)}:root{--bg:#fefbea;--surface:#fff;--header:#ffd6dc;--chip:#fffacd;--chip-pink:#ffedef;--primary:#ffb6c1;--primary-text:#8a2d47;--income:#ffe066;--income-strong:#9a6406;--expense:#ffabbb;--expense-strong:#c2415f;--text:#5b4a44;--text-muted:#9b8a82;--border:#f0e2d8;--sat:#3b6fb0;--sun:#d64545;--font-sans:system-ui, "Segoe UI", "Apple SD Gothic Neo", Roboto, sans-serif;--font-mono:ui-monospace, Consolas, monospace;--radius:12px}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);font:16px/1.6 var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0}
