html{line-height:1.5;-webkit-text-size-adjust:100%}h1,h2,h3{font-size:inherit;font-weight:inherit}button,input,select,textarea{font:inherit;color:inherit}button{background:transparent}table{border-collapse:collapse;text-indent:0}img,svg{vertical-align:middle}input[type=checkbox]{appearance:auto}

:root{--bg:#f7f8f5;--ink:#243733;--muted:#83908a;--green:#1e5d50;--line:#e8ece6;--orange:#c98550}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Tahoma,Arial,sans-serif;font-size:13px;line-height:1.9}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:wait}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible{outline:3px solid #a3c6b4;outline-offset:3px}button{transition:background .15s,transform .15s}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin:0}small{font-size:11px;font-weight:400}button{border:0}input,select,textarea{min-width:0}input:focus,select:focus,textarea:focus{outline:2px solid #a7c6b7;border-color:#80aa96}svg{flex-shrink:0} .app-shell{display:flex;min-height:100vh}.sidebar{width:238px;position:fixed;inset-block:0;right:0;background:#fff;border-left:1px solid var(--line);padding:35px 21px 22px;display:flex;flex-direction:column;z-index:20}.brand{display:flex;align-items:center;gap:11px;padding:0 8px;font-size:22px;font-weight:700;letter-spacing:-1px;line-height:1.5}.brand-symbol{background:#1e5d50;color:#fff;width:44px;height:44px;display:grid;place-items:center;border-radius:15px}.brand small{display:block;font-size:10px;font-weight:400;letter-spacing:0;color:var(--muted);margin-top:5px}.nav-label{font-size:10px;color:#a0aaa3;margin:46px 14px 14px}.nav-item{width:100%;display:flex;align-items:center;gap:13px;border-radius:11px;background:transparent;color:#76827b;padding:13px 14px;margin-bottom:7px;text-align:right}.nav-item:hover{background:#f5f8f3}.nav-item.active{background:#eaf3ed;color:#1d604d;font-weight:700}.nav-item.active::after{content:'';width:4px;height:19px;border-radius:4px;background:#317759;margin-right:auto}.nav-badge{background:#c06c53;color:#fff;font-size:10px;width:21px;height:21px;display:grid;place-items:center;border-radius:50%;margin-right:auto}.sidebar-note{margin:52px 6px 28px;border:1px solid #e5ede2;border-radius:15px;background:#f6f8f1;padding:18px 16px;color:#597657}.sidebar-note svg{margin-bottom:13px}.sidebar-note b{display:block;font-size:11px;margin-bottom:7px}.sidebar-note p{font-size:10px;line-height:2.1;color:#8a9784}.sidebar-bottom{margin-top:auto;padding:0 11px}.version{font-size:10px;color:#a5afa8;display:flex;justify-content:space-between;margin-bottom:15px}.version span{border:1px solid var(--line);border-radius:5px;padding:0 5px}.help-button{display:flex;gap:9px;align-items:center;background:none;color:#6d7b73;font-size:11px}.private{display:flex;align-items:center;gap:7px;font-size:10px;color:#a4aea7;border-top:1px solid var(--line);margin-top:20px;padding-top:17px}.main{margin-right:238px;width:calc(100% - 238px)}.topbar{height:78px;background:#ffffffb0;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 39px}.breadcrumb{display:flex;gap:13px;align-items:center;color:#9ba49e;font-size:11px}.breadcrumb b{font-weight:400;color:#56665c}.topbar-left{display:flex;gap:14px;align-items:center}.sync{display:flex;align-items:center;gap:7px;font-size:10px;color:#829387}.sync svg{color:#5f947a}.avatar{width:34px;height:34px;background:#e8eee8;border-radius:50%;display:grid;place-items:center;color:#73846e;margin-right:7px}.icon-button{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;background:transparent;color:#8a978f;border-radius:7px;flex-shrink:0}.icon-button:hover{background:#edf2ec;color:var(--green)}.icon-button.danger:hover{background:#faefec;color:#c36d59}.content{max-width:1450px;padding:37px 39px 25px;margin:auto}.heading{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:27px}.eyebrow{font-size:10px;color:#8a978d;margin-bottom:7px}.heading h1{font-size:25px;line-height:1.8;letter-spacing:-.7px;font-weight:700}.heading p{color:#87958c;font-size:11px;margin-top:7px}.primary,.secondary{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:9px;padding:11px 18px;font-size:12px;white-space:nowrap}.primary{background:var(--green);color:white;box-shadow:0 4px 10px #1e5d5012}.primary:hover{background:#174c40}.secondary{background:#f5f7f3;color:#66786a;border:1px solid var(--line)}.period{display:flex;align-items:center;gap:18px;margin-bottom:18px}.month-control{display:flex;align-items:center;background:white;border:1px solid var(--line);border-radius:9px;padding:3px;gap:8px}.month-control>span{min-width:88px;text-align:center;font-size:11px}.all-months{display:flex;align-items:center;gap:7px;font-size:10px;color:#859389}.all-months input{accent-color:var(--green);width:13px;height:13px}.period-note{margin-right:auto;color:#9ba59d;font-size:10px}.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:19px;margin-bottom:25px}.stat{background:white;border:1px solid var(--line);border-radius:14px;padding:20px 23px}.stat-label{display:flex;align-items:center;justify-content:space-between;color:#748279;font-size:11px;margin-bottom:12px;min-height:30px}.stat-icon{width:30px;height:30px;border-radius:9px;display:grid;place-items:center}.stat-icon.income{background:#ecf5ec;color:#4a9274}.stat-icon.expense{background:#fcf1e8;color:#c68556}.stat strong{display:block;font-size:25px;font-weight:700;line-height:1.8;font-variant-numeric:tabular-nums;white-space:nowrap}.stat strong small{font-size:10px;color:#97a298;margin-right:3px}.stat-foot{display:flex;align-items:center;gap:7px;color:#98a198;font-size:10px;margin-top:11px}.stat.balance{background:#173f37;color:white;border-color:#173f37;position:relative;overflow:hidden}.balance::after{content:'';position:absolute;width:180px;height:180px;border:1px solid #ffffff12;border-radius:50%;top:52px;left:-70px;pointer-events:none;box-shadow:0 0 0 22px #ffffff05,0 0 0 44px #ffffff03}.balance .stat-label,.balance .stat-foot,.balance strong small{color:#a6bdb2}.dot{height:7px;width:7px;border-radius:50%;display:inline-block;flex-shrink:0}.green-bg{background:#6aa689}.orange-bg{background:#dbac7a}.green{color:#40816a}.red{color:#b97559}.overview-grid{display:grid;grid-template-columns:1.07fr 1fr;gap:23px;margin-bottom:23px}.panel{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:22px 24px 19px}.panel-heading h2{font-size:14px;font-weight:700}.panel-heading p{font-size:10px;color:#98a198;margin-top:4px}.panel-icon{color:#a3afa5;background:#f6f8f4;border:1px solid #edf1e9;width:36px;height:36px;display:grid;place-items:center;border-radius:10px}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:31px 25px 35px;min-height:225px}.empty-icon{width:55px;height:55px;display:grid;place-items:center;border-radius:18px;background:#f1f5ee;color:#a1b2a0;margin-bottom:13px;border:1px solid #e8efe2}.empty h3{font-size:12px;color:#607664;font-weight:500}.empty p{font-size:10px;color:#a0aa9e;margin-top:5px;max-width:300px;line-height:2}.text-button{background:none;color:#548471;display:inline-flex;align-items:center;justify-content:center;gap:7px;font-size:11px;padding:7px 0}.empty .text-button{margin-top:14px;font-weight:500}.text-button:hover{color:#1e5d50}.text-button.small{font-size:10px}.text-button.full{display:flex;width:100%;border-top:1px solid var(--line);margin-top:14px;padding-top:14px}.heading-actions{display:flex;align-items:center;gap:20px}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}table{border-collapse:collapse;width:100%;text-align:right;white-space:nowrap;font-size:11px}thead{background:#f9faf7;color:#94a093;font-size:10px;border-top:1px solid #eff1ec}th{font-weight:400;padding:12px 19px}td{padding:16px 19px;border-top:1px solid #f0f2ed;vertical-align:middle}td:first-child,th:first-child{padding-right:24px}td:last-child,th:last-child{padding-left:22px}.record-title{display:flex;align-items:center;gap:10px}.record-title b{font-size:11px;font-weight:500}.record-icon{width:33px;height:33px;border-radius:10px;display:grid;place-items:center}.record-icon.income{background:#edf5ed;color:#5b9572}.record-icon.expense{background:#faf0e6;color:#bf976b}.record-icon.loan{background:#f1f4eb;color:#8a9c74}.record-note{display:block;color:#99a398;font-size:9px;max-width:210px;white-space:normal;overflow-wrap:anywhere}.date{color:#8d9b8e;font-size:10px;font-variant-numeric:tabular-nums;direction:ltr;text-align:right}.number{font-size:12px;font-weight:500}.number small{font-size:9px;color:#a3ada0;margin-right:2px}.tag{font-size:9px;padding:4px 9px;background:#f5f7f1;color:#81917a;border-radius:6px;display:inline-block}.tag.subtle{background:#f4f6f0}.tags{display:flex;flex-wrap:wrap;gap:4px;max-width:190px}.mini-tag{font-size:9px;color:#92a08a}.row-actions{display:flex;align-items:center;gap:5px}.upcoming-list{padding:0 24px 12px}.due-row{display:flex;align-items:center;gap:12px;border-top:1px solid var(--line);padding:14px 0}.due-day{background:#f4f6ef;border:1px solid #e9edde;border-radius:10px;min-width:43px;height:48px;text-align:center;color:#839779;line-height:1.5;padding:3px}.due-day b{display:block;font-size:17px}.due-day small{font-size:9px}.due-day.late{background:#fbf0e9;border-color:#f3e5dc;color:#bd8367}.due-row>div{flex:1}.due-row>div>b{font-size:11px;font-weight:500;display:block}.due-row>div>small{font-size:9px;color:#98a08f}.due-row>strong{font-size:12px;font-weight:500}.due-row>strong small{display:block;text-align:left;color:#a3ab99;font-size:9px}.breakdown{display:flex;align-items:center;gap:26px;justify-content:center;padding:24px 26px 40px;min-height:225px}.donut{width:157px;height:157px;border-radius:50%;display:grid;place-items:center;flex-shrink:0}.donut>div{width:119px;height:119px;background:white;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center}.donut small{color:#9aa793;font-size:9px}.donut b{font-size:19px;line-height:1.8}.legend{min-width:115px;flex:1;max-width:190px}.legend button{display:flex;align-items:center;gap:9px;background:none;width:100%;font-size:10px;padding:6px 0;color:#7e8f79}.legend b{margin-right:auto;font-size:10px;font-weight:400;color:#a2ae99}.legend-more{font-size:9px;color:#a3ad98}.filters{display:flex;gap:12px;padding:0 24px 20px;flex-wrap:wrap}.search{display:flex;align-items:center;border:1px solid var(--line);border-radius:8px;background:#fcfdf9;padding:0 10px;color:#a6b09e;flex:1;min-width:180px}.search input{width:100%;border:0;background:none;padding:9px 8px;font-size:11px;color:#50674f}.search input:focus{outline:none}.search:focus-within{outline:2px solid #a7c6b7}select{background:#fcfdf9;border:1px solid var(--line);border-radius:8px;padding:9px 12px;color:#778b6e;font-size:11px;max-width:100%}.status{display:inline-flex;align-items:center;gap:5px;border-radius:6px;padding:3px 8px;font-size:9px}.status.paid{background:#edf6ec;color:#5d946b}.status.overdue{background:#fcf0e8;color:#c08969}.status.pending{background:#f3f4eb;color:#9aa77b}.pay-button{display:inline-flex;gap:5px;align-items:center;background:#edf4eb;border:1px solid #dceadb;border-radius:7px;color:#638c59;padding:6px 8px;font-size:10px}.pay-button:hover{background:#e2f0df}.footer{display:flex;justify-content:space-between;color:#a6afa1;font-size:9px;gap:14px;margin-top:28px}.footer>span:first-child{display:flex;align-items:center;gap:6px}.mobile-nav{display:none}.overlay{position:fixed;inset:0;background:#17392c55;backdrop-filter:blur(4px);z-index:50;display:flex;align-items:center;justify-content:center;padding:22px;overflow-y:auto}.modal{width:480px;max-width:100%;max-height:90dvh;overflow-y:auto;background:white;border:1px solid #e7eee0;border-radius:18px;box-shadow:0 25px 70px #183a292b;padding:26px 28px}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:25px}.modal-header h2{font-size:20px}.modal-header .eyebrow{font-size:9px}.modal form>label,.form-grid>label{display:block;font-size:11px;color:#667e5d;margin-bottom:18px}.modal input,.modal textarea,.modal select{display:block;width:100%;border:1px solid #e1e8da;border-radius:9px;padding:11px 12px;margin-top:7px;background:#fcfdf9;color:#395335;font-size:13px}.modal input::placeholder,.modal textarea::placeholder{color:#b0baa5;font-size:11px}.modal .amount-input{font-size:22px;line-height:1.5;direction:ltr;text-align:right}.field-unit{float:left;color:#9cac90;font-size:10px}.field-hint{font-size:9px;display:block;color:#a0ac93;margin-top:4px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.label-icon{display:flex;align-items:center;gap:5px}.optional{font-size:9px;color:#a6b399;margin-right:7px}.modal-footer{display:flex;justify-content:flex-end;gap:10px;border-top:1px solid var(--line);padding-top:18px;margin-top:20px}.modal-footer .primary{min-width:125px}.form-note{display:flex;gap:8px;background:#f5f8f0;padding:12px;border-radius:9px;color:#91a17f;font-size:9px;align-items:flex-start}.form-error{background:#fff1ec;color:#b26750;padding:10px;border-radius:8px;font-size:11px}.toast{position:fixed;bottom:27px;left:50%;transform:translateX(-50%);background:#173f37;color:white;border:1px solid #567260;border-radius:12px;padding:13px 18px;display:flex;align-items:center;gap:17px;z-index:80;box-shadow:0 7px 25px #20493226;max-width:calc(100vw - 30px);font-size:12px}.toast .icon-button{color:#a7c5b2}.pay-summary{padding:16px;background:#f5f8f0;border-radius:12px;margin-bottom:20px}.pay-summary>b{font-size:13px}.pay-summary strong{display:block;font-size:24px;margin:7px 0}.pay-summary p{font-size:10px;color:#91a17e}.help-modal>p{font-size:12px;line-height:2.3;color:#6b7f63;margin-bottom:17px}.help-modal>.primary{margin-top:5px}.error-banner{border:1px solid #f0dbcc;background:#fff4ec;color:#b58567;display:flex;justify-content:space-between;padding:13px;border-radius:10px;margin-bottom:20px;font-size:12px}.error-banner button{background:none;color:#866b50;text-decoration:underline}.loading-state{display:flex;justify-content:center;align-items:center;gap:10px;min-height:270px;color:#88977e}.spin{animation:spin 1.2s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
@media(min-width:1550px){.content{padding-top:48px}.heading h1{font-size:29px}.stat{padding:24px 28px}.stat strong{font-size:29px}.panel-heading{padding-top:26px}.empty{min-height:250px}}
@media(max-width:1200px){.sidebar{width:211px;padding-right:15px;padding-left:15px}.main{margin-right:211px;width:calc(100% - 211px)}.content{padding:28px 25px}.topbar{padding:0 25px}.stats{gap:13px}.stat{padding:16px}.stat strong{font-size:22px}.overview-grid{gap:17px}.panel-heading{padding:18px}.heading h1{font-size:23px}.heading-actions{gap:11px}.breakdown{gap:15px;padding-right:17px;padding-left:17px}.donut{width:133px;height:133px}.donut>div{width:101px;height:101px}.donut b{font-size:16px}}
@media(max-width:1000px){.overview-grid{grid-template-columns:1fr 1fr}.breakdown{flex-direction:column;gap:15px}.legend{max-width:none;width:100%;display:grid;grid-template-columns:1fr 1fr;gap:0 15px}.due-row>strong{font-size:10px}.heading h1{font-size:21px}.stats{gap:10px}.stat strong{font-size:19px}.stat-foot{font-size:9px}.brand{font-size:20px}.sidebar-note{margin-top:36px}.heading{align-items:flex-start}.heading .primary{margin-top:23px}}
@media(max-width:800px){.sidebar{display:none}.main{margin:0;width:100%}.topbar{height:66px;padding:0 23px}.breadcrumb{font-size:10px}.sync{font-size:9px}.content{padding:27px 23px 105px}.heading{margin-bottom:23px}.heading h1{font-size:23px}.stats{gap:12px}.stat strong{font-size:23px}.overview-grid{gap:16px}.breakdown{flex-direction:row}.legend{display:block;max-width:150px}.mobile-nav{position:fixed;display:flex;justify-content:space-around;bottom:0;right:0;left:0;background:#fffffff5;backdrop-filter:blur(10px);border-top:1px solid var(--line);z-index:30;padding:10px 12px calc(9px + env(safe-area-inset-bottom))}.mobile-nav button{display:flex;flex-direction:column;align-items:center;gap:3px;padding:4px 15px;background:none;color:#94a48c;font-size:10px}.mobile-nav button.active{color:#2b7552}.mobile-nav button.active svg{stroke-width:2.3}.toast{bottom:96px}.sidebar-bottom{display:none}.footer>span:last-child{display:none}.category-panel .breakdown{flex-direction:column}.category-panel .legend{width:100%;display:grid;grid-template-columns:1fr 1fr;max-width:100%;gap:0 15px}}
@media(max-width:560px){body{font-size:12px}.topbar{height:58px;padding:0 18px}.topbar-left{gap:7px}.avatar{width:29px;height:29px;margin:0}.content{padding:23px 17px 110px}.heading{gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:20px}.heading h1{font-size:22px;letter-spacing:-.7px}.heading p{font-size:10px}.heading .primary{margin-top:2px;padding:10px 14px;font-size:11px}.eyebrow{font-size:9px}.stats{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:18px}.stat{padding:15px 15px 14px;border-radius:12px;min-width:0}.stat strong{font-size:21px;white-space:normal;overflow-wrap:anywhere}.stat strong small{font-size:9px}.stat-label{font-size:10px;gap:3px;margin-bottom:5px}.stat-label svg{width:17px;height:17px}.stat-icon{width:27px;height:27px}.stat-foot{font-size:9px;margin-top:7px}.stats .stat:last-child{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:0 15px}.stats .stat:last-child .stat-label{margin-bottom:0;justify-content:flex-start;gap:13px;grid-column:1}.stats .stat:last-child strong{grid-column:2;grid-row:1/3;text-align:left;align-self:center;font-size:25px}.stats .stat:last-child .stat-foot{grid-column:1;font-size:8px}.overview-grid{grid-template-columns:1fr;gap:18px;margin-bottom:18px}.empty{min-height:220px;padding:24px 20px}.panel-heading{padding:18px 18px 14px;align-items:flex-start}.panel-heading h2{font-size:13px}.panel-heading p{font-size:9px;max-width:240px}.panel-icon{width:31px;height:31px}.heading-actions{flex-direction:column;gap:0;align-items:flex-end;white-space:nowrap}.heading-actions .text-button{font-size:9px;padding:2px 0}.period{gap:10px;margin-bottom:15px}.period-note{font-size:8px}.month-control{gap:0}.month-control>span{min-width:72px;font-size:10px}.all-months{font-size:9px}.month-control .icon-button{width:26px;height:26px}.category-panel .breakdown{flex-direction:row;padding-top:15px;padding-bottom:26px;gap:23px}.category-panel .legend{display:block;flex:1;width:auto;max-width:160px}.filters{padding:0 17px 16px;gap:9px}.filters>.search{flex-basis:100%}.filters select{flex:1;min-width:100px;max-width:100%;font-size:10px}td,th{padding:12px 15px}td:first-child,th:first-child{padding-right:18px}.upcoming-list{padding:0 18px 8px}.due-row>strong{font-size:13px}.footer{font-size:8px}.overlay{padding:13px;align-items:center}.modal{padding:23px 20px;max-height:91dvh;border-radius:15px}.modal-header{margin-bottom:20px}.modal-header h2{font-size:18px}.modal input,.modal select,.modal textarea{font-size:16px;padding:10px 11px}.modal .amount-input{font-size:24px}.form-grid{gap:10px}.modal form>label,.form-grid>label{font-size:10px}.field-unit{font-size:9px}.form-note{font-size:8px}.modal-footer{padding-top:15px}.toast{font-size:11px;bottom:95px;width:max-content;max-width:calc(100vw - 24px)}.mobile-nav button{padding:3px 13px;font-size:9px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

.auth-shell{min-height:100dvh;display:grid;place-items:center;padding:28px 18px}.auth-card{background:#fff;border:1px solid var(--line);border-radius:22px;padding:34px;width:100%;max-width:430px;box-shadow:0 15px 55px #1e5d5008}.auth-brand{font-size:24px;font-weight:bold;color:var(--green);display:block;margin-bottom:27px}.auth-card h1{font-size:22px;font-weight:700;margin-bottom:10px}.auth-card>p{color:#75837b;line-height:2.1;font-size:12px}.auth-form{margin-top:24px;display:grid;gap:17px}.auth-form label{font-size:12px}.auth-form input:not([type=hidden]){display:block;width:100%;border:1px solid #dce5df;border-radius:9px;padding:12px;margin-top:6px;font-size:16px;background:#fafcf9}.auth-form .primary{justify-content:center;margin-top:6px}.form-success{color:#1e5d50;background:#edf6ee;padding:12px;border-radius:10px}.logout-form{margin:0}.auth-card>.primary{display:inline-flex;margin-top:18px}@media(max-width:560px){.auth-card{padding:27px 23px}.topbar-left .sync{display:none}}
