:root{--brand-primary:#00a99d;--brand-primary-hover:#008f85;--brand-deep:#0b4945;--brand-indigo:#5b5fef;--brand-mint:#59e5d7;--brand-mango:#ffb020;--status-positive:#23855b;--status-negative:#ff5c5c;--status-warning:#b86f00;--text-primary:#202b2a;--text-secondary:#667371;--surface-page:#f4f7f6;--surface-card:#fff;--border-default:#dce5e3;--focus-ring:#5b5fef;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px;--radius-control:10px;--radius-card:14px;--radius-modal:20px;--shadow-floating:0 16px 40px #0b494524}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.grid-2,.grid-3,.grid-4{gap:var(--space-4);display:grid}.grid-2{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.grid-3{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.grid-4{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.page-header{justify-content:space-between;align-items:flex-end;gap:var(--space-4);margin-bottom:var(--space-6);flex-wrap:wrap;display:flex}.page-title{color:var(--brand-deep);margin:0;font-size:24px;font-weight:700}.page-subtitle{margin:var(--space-1) 0 0;color:var(--text-secondary);font-size:14px}.section{margin-bottom:var(--space-8)}.section-title{margin:0 0 var(--space-4);color:var(--text-primary);font-size:16px;font-weight:600}.btn{justify-content:center;align-items:center;gap:var(--space-2);min-height:44px;padding:0 var(--space-4);border-radius:var(--radius-control);cursor:pointer;border:1px solid #0000;font-size:14px;font-weight:600;transition:background-color .15s,border-color .15s;display:inline-flex}.btn:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.btn:disabled{opacity:.6;cursor:not-allowed}.btn--primary{background:var(--brand-primary);color:#fff}.btn--primary:hover:not(:disabled){background:var(--brand-primary-hover)}.btn--secondary{background:var(--surface-card);border-color:var(--border-default);color:var(--text-primary)}.btn--secondary:hover:not(:disabled){border-color:var(--brand-primary)}.btn--ghost{color:var(--text-secondary);background:0 0}.btn--ghost:hover:not(:disabled){background:var(--surface-page);color:var(--text-primary)}.btn--danger{color:var(--status-negative);border-color:var(--status-negative);background:0 0}.btn--danger:hover:not(:disabled){background:var(--status-negative);color:#fff}.field{gap:var(--space-1);flex-direction:column;display:flex}.field__label{color:var(--text-primary);font-size:14px;font-weight:600}.field__input{min-height:44px;padding:0 var(--space-3);border-radius:var(--radius-control);border:1px solid var(--border-default);background:var(--surface-card);color:var(--text-primary);font-family:inherit;font-size:16px}.field__input:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px}.field__input--error{border-color:var(--status-negative)}.field__hint{color:var(--text-secondary);margin:0;font-size:12px}.field__error{color:var(--status-negative);margin:0;font-size:12px}.field__input-group{align-items:stretch;gap:var(--space-2);display:flex}.field__input-group .field__input{flex:1}.field__toggle{min-height:44px;padding:0 var(--space-3);border-radius:var(--radius-control);border:1px solid var(--border-default);background:var(--surface-card);color:var(--text-secondary);cursor:pointer;font-size:12px;font-weight:600}.field__toggle:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px}form{gap:var(--space-4);flex-direction:column;display:flex}.card{background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-card);padding:var(--space-4)}.badge{padding:var(--space-1) var(--space-2);white-space:nowrap;border-radius:999px;align-items:center;font-size:12px;font-weight:600;display:inline-flex}.badge--neutral{background:var(--surface-page);color:var(--text-secondary);border:1px solid var(--border-default)}.badge--positive{color:var(--status-positive);background:#23855b1f}.badge--negative{color:var(--status-negative);background:#ff5c5c1f}.badge--warning{color:var(--status-warning);background:#b86f001f}.badge--brand{color:var(--brand-primary-hover);background:#00a99d1f}.empty-state{padding:var(--space-8) var(--space-4);text-align:center;color:var(--text-secondary)}.empty-state__title{margin:0 0 var(--space-2);color:var(--text-primary);font-weight:600}.empty-state__description{margin:0 0 var(--space-4);font-size:14px}.page-loading{min-height:60vh;color:var(--text-secondary);justify-content:center;align-items:center;font-size:14px;display:flex}.chart-card__title{margin:0 0 var(--space-4);font-size:16px;font-weight:600}.chart-card__canvas{width:100%}.tabs{gap:var(--space-1);padding:var(--space-1);background:var(--surface-page);border:1px solid var(--border-default);border-radius:var(--radius-control);display:inline-flex}.tabs__item{min-height:36px;padding:0 var(--space-4);border-radius:calc(var(--radius-control) - 2px);color:var(--text-secondary);cursor:pointer;background:0 0;border:none;font-size:14px;font-weight:600}.tabs__item:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.tabs__item--active{background:var(--surface-card);color:var(--brand-primary-hover);box-shadow:0 1px 2px #0b49451f}.period-selector{align-items:center;gap:var(--space-3);background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-control);padding:var(--space-1) var(--space-2);display:inline-flex}.period-selector__nav{min-width:32px;min-height:32px;color:var(--brand-primary);cursor:pointer;border-radius:var(--radius-control);background:0 0;border:none;font-size:18px}.period-selector__nav:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px}.period-selector__label{text-align:center;min-width:140px;font-size:14px;font-weight:600}.table-scroll{overscroll-behavior-x:contain;overflow-x:auto}.data-table{border-collapse:collapse;width:100%}.data-table th,.data-table td{text-align:left;padding:var(--space-3);border-bottom:1px solid var(--border-default)}.data-table th{text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary);font-size:12px}.data-table th.is-numeric,.data-table td.is-numeric{text-align:right}.data-table tfoot td{border-top:2px solid var(--border-default);background:var(--surface-page);border-bottom:none}@media (width<=767px){.data-table thead{display:none}.data-table,.data-table tbody,.data-table tr,.data-table td{width:100%;display:block}.data-table tr{margin-bottom:var(--space-4);border:1px solid var(--border-default);border-radius:var(--radius-card);padding:var(--space-3)}.data-table td{justify-content:space-between;gap:var(--space-3);padding:var(--space-1) 0;border:none;display:flex}.data-table td:before{content:attr(data-label);color:var(--text-secondary);font-weight:600}.data-table tfoot td{background:0 0;border-top:none}.data-table tfoot tr{background:var(--surface-page)}}.budget-sheet{margin-bottom:var(--space-8)}.budget-sheet__header{justify-content:space-between;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.budget-sheet__header .section-title{margin:0}.budget-sheet__actions{gap:var(--space-2);display:flex}.budget-sheet__table{border-collapse:separate;border-spacing:0;width:100%}.budget-sheet__table th,.budget-sheet__table td{text-align:left;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border-default);white-space:nowrap}.budget-sheet__table th{text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary);background:var(--surface-page);font-size:12px}.budget-sheet__table th.is-numeric,.budget-sheet__table td.is-numeric{text-align:right;min-width:120px}.budget-sheet__table tfoot td{border-top:2px solid var(--border-default);background:var(--surface-page);border-bottom:none}.budget-sheet__sticky{background:var(--surface-card);z-index:1;position:sticky}.budget-sheet__table tfoot .budget-sheet__sticky{background:var(--surface-page)}.budget-sheet__sticky--1{min-width:180px;max-width:180px;left:0}.budget-sheet__sticky--2{border-right:1px solid var(--border-default);min-width:170px;max-width:170px;left:180px}.budget-sheet__amount-input,.budget-sheet__description-input{width:100%;min-height:36px;padding:0 var(--space-2);border-radius:var(--radius-control);color:var(--text-primary);background:0 0;border:1px solid #0000;font-family:inherit;font-size:14px}.budget-sheet__amount-input{text-align:right}.budget-sheet__amount-input:hover,.budget-sheet__description-input:hover{border-color:var(--border-default)}.budget-sheet__amount-input:focus-visible,.budget-sheet__description-input:focus-visible{border-color:var(--brand-primary);background:var(--surface-card);outline:none}.budget-sheet__amount-input:disabled,.budget-sheet__description-input:disabled{cursor:default;opacity:1}.budget-sheet__category-select{width:100%;min-height:36px}.budget-sheet__new-row-actions{gap:var(--space-2);display:flex}.budget-sheet__sticky--section{border-right:1px solid var(--border-default);min-width:350px;max-width:350px;left:0}@media (width<=767px){.budget-sheet__sticky--1{min-width:140px;max-width:140px;position:static}.budget-sheet__table .budget-sheet__sticky--2{white-space:normal;min-width:140px;max-width:140px;left:0}.budget-sheet__sticky--section{min-width:280px;max-width:280px}}.budget-sheet__section-row td,.budget-sheet__table .budget-sheet__section-row .budget-sheet__sticky{background:var(--surface-page);text-transform:uppercase;letter-spacing:.04em;color:var(--brand-deep);font-size:12px;font-weight:700}.budget-sheet__subtotal-row td{color:var(--text-secondary);font-weight:600}.budget-sheet__readonly-text,.budget-sheet__readonly-value{padding:0 var(--space-2);color:var(--text-secondary);display:block}.budget-toolbar{justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.budget-toolbar__months{gap:var(--space-2);display:flex}.money--positive{color:var(--status-positive)}.money--negative{color:var(--status-negative)}.flow-card__title{margin:0 0 var(--space-3);color:var(--brand-deep);font-size:16px;font-weight:700}.flow-card__line{justify-content:space-between;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid var(--border-default);font-size:14px;display:flex}.flow-card__line--total{border-bottom:none;border-top:2px solid var(--border-default);margin-top:var(--space-1);font-size:16px;font-weight:700}.flow-card__sign{width:1em;color:var(--text-secondary);font-weight:700;display:inline-block}.flow-card__hint{margin:var(--space-3) 0 0;color:var(--text-secondary);font-size:12px}.modal-overlay{padding:var(--space-4);z-index:100;background:#0b494566;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--surface-card);border-radius:var(--radius-modal);width:100%;max-width:480px;max-height:90vh;box-shadow:var(--shadow-floating);padding:var(--space-6);overflow-y:auto}.modal__header{margin-bottom:var(--space-4);justify-content:space-between;align-items:center;display:flex}.modal__title{color:var(--text-primary);margin:0;font-size:18px;font-weight:600}.modal__close{color:var(--text-secondary);cursor:pointer;padding:var(--space-1);background:0 0;border:none;font-size:24px;line-height:1}.modal__body{gap:var(--space-4);flex-direction:column;display:flex}.modal__footer{justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-6);display:flex}.category-links-list{margin:0 0 var(--space-4);gap:var(--space-2);flex-direction:column;padding:0;list-style:none;display:flex}.category-links-list__item{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--border-default);border-radius:var(--radius-control);display:flex}.category-links-form__row{gap:var(--space-2);grid-template-columns:1fr auto;display:grid}.icon-picker{gap:var(--space-2);grid-template-columns:repeat(6,1fr);display:grid}.icon-picker__option{border:1px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-card);cursor:pointer;justify-content:center;align-items:center;min-height:44px;font-size:20px;display:flex}.icon-picker__option--active{border-color:var(--brand-primary);background:#00a99d1f}.category-row{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--border-default);display:flex}.category-row:last-child{border-bottom:none}.category-row__info{align-items:center;gap:var(--space-3);display:flex}.category-row__icon{border-radius:var(--radius-control);justify-content:center;align-items:center;width:32px;height:32px;font-size:16px;display:inline-flex}.category-row__rule{margin:var(--space-1) 0 0;font-size:12px}.invite-form{align-items:flex-end;gap:var(--space-3);flex-flow:wrap;display:flex}.invite-form .field{flex:1;min-width:200px}.member-row{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--border-default);display:flex}.member-row:last-child{border-bottom:none}.member-row__name{font-weight:600}.member-row__email{color:var(--text-secondary);font-size:12px}.member-row__actions{gap:var(--space-2);display:flex}.form-feedback{padding:var(--space-3);border-radius:var(--radius-control);color:var(--status-positive);background:#23855b1a;font-size:14px}.login-screen{flex-direction:column;min-height:100vh;display:flex}.login-page{padding:var(--space-6);background:var(--surface-page);flex:1;justify-content:center;align-items:center;display:flex}.login-screen__hero{display:none}@media (width>=960px){.login-screen{flex-direction:row}.login-page{flex:1;min-width:0}.login-screen__hero{justify-content:center;align-items:flex-start;gap:var(--space-6);min-width:0;padding:var(--space-8) calc(var(--space-8) * 1.5);background:linear-gradient(160deg, var(--brand-deep) 0%, #082522 100%);flex-direction:column;flex:1;display:flex}.login-screen__hero-logo{width:100%;max-width:480px;height:auto}.login-screen__hero-message{color:#fff;max-width:440px;margin:0;font-size:30px;font-weight:700;line-height:1.3}.login-screen__hero-submessage{color:#ffffffc7;max-width:420px;margin:0;font-size:16px;line-height:1.6}}.login-card{gap:var(--space-6);width:100%;max-width:400px;box-shadow:var(--shadow-floating);flex-direction:column;display:flex}.login-card__brand{align-items:center;gap:var(--space-3);text-align:center;flex-direction:column;display:flex}.login-card__logo{width:auto;height:40px}.login-card__tagline{color:var(--text-secondary);margin:0;font-size:14px}.login-card__hint{padding:var(--space-3);border-radius:var(--radius-control);background:var(--surface-page);border:1px solid var(--border-default);color:var(--text-secondary);font-size:12px}.login-card__footer{text-align:center;font-size:14px}.profile-form{max-width:480px}.app-topbar,.app-session{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.app-sidebar__footer{margin-top:auto}.app-topbar__actions{align-items:center;gap:var(--space-2);display:flex}.app-topbar__bell{justify-content:center;align-items:center;min-width:44px;min-height:44px;font-size:18px;text-decoration:none;display:inline-flex;position:relative}.app-topbar__bell .nav-count{position:absolute;top:4px;right:2px}.nav-count{min-width:18px;height:18px;margin-left:var(--space-2);background:var(--status-negative);color:#fff;border-radius:999px;justify-content:center;align-items:center;padding:0 5px;font-size:11px;font-weight:700;line-height:1;display:inline-flex}.budget-sheet__table .budget-sheet__due-col{text-align:center;min-width:88px;max-width:88px}.budget-sheet__due-wrap{justify-content:center;align-items:center;gap:2px;display:flex}.recurring-toggle{border-radius:var(--radius-control);width:26px;height:26px;color:var(--text-secondary);font:inherit;cursor:pointer;opacity:.45;background:0 0;border:1px solid #0000;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:16px;line-height:1;display:inline-flex}.recurring-toggle:hover:not(:disabled){border-color:var(--border-default);opacity:1}.recurring-toggle:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px;opacity:1}.recurring-toggle--on{color:var(--brand-primary);opacity:1;font-weight:700}.recurring-toggle:disabled{cursor:default}.budget-sheet__recurring-check{align-items:center;gap:var(--space-2);margin-top:var(--space-2);white-space:nowrap;cursor:pointer;font-size:13px;display:flex}.budget-sheet__due-input{border-radius:var(--radius-control);width:44px;min-height:36px;color:var(--text-primary);font:inherit;text-align:center;background:0 0;border:1px solid #0000;font-size:14px}.budget-sheet__due-input:hover{border-color:var(--border-default)}.budget-sheet__due-input:focus-visible{border-color:var(--brand-primary);background:var(--surface-card);outline:none}.budget-sheet__cell{align-items:center;gap:var(--space-1);display:flex}.budget-sheet__cell .budget-sheet__amount-input{flex:1;min-width:0}.payment-toggle,.payment-toggle-placeholder{flex-shrink:0;width:22px;height:22px}.payment-toggle{border:2px solid var(--border-default);background:var(--surface-card);color:#fff;cursor:pointer;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:12px;font-weight:700;display:inline-flex}.payment-toggle:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.payment-toggle:disabled{cursor:default}.payment-toggle--paid{border-color:var(--status-positive);background:var(--status-positive)}.payment-toggle--overdue{border-color:var(--status-negative);background:var(--status-negative)}.payment-toggle--open:hover:not(:disabled){border-color:var(--status-positive)}.push-card{justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.push-card__title{margin:0 0 var(--space-1);font-size:16px;font-weight:700}.notification-row{gap:var(--space-3);width:100%;padding:var(--space-3);border:none;border-bottom:1px solid var(--border-default);color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;display:flex}.notification-row:last-child{border-bottom:none}.notification-row:hover{background:var(--surface-page)}.notification-row--unread{background:#00a99d0f}.notification-row__icon{font-size:20px;line-height:1.2}.notification-row__content{flex-direction:column;gap:2px;min-width:0;display:flex}.notification-row__title{font-weight:600}.notification-row--unread .notification-row__title{font-weight:700}.notification-row__body,.notification-row__meta{color:var(--text-secondary);font-size:13px}.notification-row__meta{font-size:12px}*,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}body{color:var(--text-primary);background:var(--surface-page);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;overflow-x:hidden}.money{font-variant-numeric:tabular-nums}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.app-shell{flex-direction:column;min-height:100vh;display:flex}.app-sidebar{display:none}.app-content{flex-direction:column;flex:1;min-width:0;min-height:100vh;display:flex}.app-topbar{padding:var(--space-4);border-bottom:1px solid var(--border-default);background:var(--surface-card)}.app-topbar__brand{align-items:center;gap:var(--space-3);min-width:0;display:flex}.app-topbar__icon{flex-shrink:0;width:32px;height:32px}.app-active-space{color:var(--text-secondary);font-size:14px}.app-active-space--mobile{display:block}.app-main{width:100%;max-width:1440px;padding:var(--space-6) var(--space-4) calc(var(--space-8) + 56px);flex:1;margin:0 auto}.app-nav{display:flex}.app-nav--bottom{background:var(--surface-card);border-top:1px solid var(--border-default);padding:var(--space-1) 0;justify-content:space-around;align-items:center;position:fixed;bottom:0;left:0;right:0}.app-nav--sidebar{display:none}.app-nav__link{min-width:44px;min-height:44px;padding:var(--space-2) var(--space-3);color:var(--text-secondary);border-radius:var(--radius-control);justify-content:center;align-items:center;font-size:14px;text-decoration:none;display:flex}.app-nav__link--active{color:var(--brand-primary);font-weight:600}@media (width>=768px){.app-shell{flex-direction:row}.app-sidebar{gap:var(--space-4);width:240px;padding:var(--space-6) var(--space-4);background:var(--surface-card);border-right:1px solid var(--border-default);flex-direction:column;flex-shrink:0;display:flex}.app-brand__logo{width:90%;height:auto;display:block}.app-nav--sidebar{gap:var(--space-1);flex-direction:column;display:flex}.app-nav--sidebar .app-nav__link{justify-content:flex-start}.app-nav--bottom,.app-topbar,.app-active-space--mobile,.app-topbar__logout{display:none}.app-main{padding:var(--space-8)}}
