:root{--color-primary:#4f46e5;--color-accent:#7c3aed;--color-bg:#fff;--color-surface:#f9fafb;--color-text:#111827;--color-muted:#6b7280;--font-family-base:system-ui, "Segoe UI", Roboto, sans-serif;--font-size-base:1rem;--space-base:1rem;--radius-base:.5rem;--shadow-strength:.1;--radius-sm:calc(var(--radius-base) * .5);--radius-md:var(--radius-base);--radius-lg:calc(var(--radius-base) * 1.5);--radius-pill:999px;--radius-circle:50%;--text-xs:calc(var(--font-size-base) * .75);--text-sm:calc(var(--font-size-base) * .875);--text-base:var(--font-size-base);--text-lg:calc(var(--font-size-base) * 1.25);--text-xl:calc(var(--font-size-base) * 1.5);--color-border:color-mix(in srgb, var(--color-muted) 30%, transparent);--color-border-strong:color-mix(in srgb, var(--color-muted) 55%, transparent);--color-danger:#b91c1c;--color-danger-surface:color-mix(in srgb, var(--color-danger) 8%, var(--color-bg));--color-danger-border:color-mix(in srgb, var(--color-danger) 25%, transparent);--color-success:#15803d;--color-success-surface:color-mix(in srgb, var(--color-success) 10%, var(--color-bg));--color-success-border:color-mix(in srgb, var(--color-success) 30%, transparent);--shadow-sm:0 1px 2px rgba(0, 0, 0, calc(var(--shadow-strength) * .6)), 0 1px 3px rgba(0, 0, 0, var(--shadow-strength));--shadow-md:0 2px 4px rgba(0, 0, 0, calc(var(--shadow-strength) * .7)), 0 6px 16px rgba(0, 0, 0, var(--shadow-strength))}*,:before,:after{box-sizing:border-box}*{margin:0;padding:0}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100dvh;line-height:1.5}img,picture,video,canvas,svg{max-width:100%;display:block}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}body{font-family:var(--font-family-base);font-size:var(--font-size-base);color:var(--color-text);background-color:var(--color-bg)}h1,h2,h3,h4,h5,h6{color:var(--color-text);font-weight:600;line-height:1.25}a{color:var(--color-primary);text-decoration:underline}a:hover{color:var(--color-accent)}a:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:var(--radius-sm)}input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}input[type=radio],input[type=checkbox]{accent-color:var(--color-primary)}.o-container{width:100%;max-width:72rem;padding-inline:calc(var(--space-base) * 1.5);margin-inline:auto}.o-page-center{place-items:center;min-height:50vh;display:grid}.o-page-header{background-color:var(--color-surface);border-bottom:1px solid var(--color-border);padding-block:calc(var(--space-base) * .75);padding-inline:var(--space-base)}.o-page-header__inner{align-items:center;gap:var(--space-base);flex-wrap:wrap;justify-content:space-between;display:flex}.o-page-main{padding:var(--space-base)}.o-page-footer{border-top:1px solid var(--color-border);padding-block:var(--space-base);text-align:center}.o-page-footer__copy{color:var(--color-muted);font-size:var(--text-sm)}.c-nav__list{gap:var(--space-base);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.c-nav__link{color:var(--color-text);padding-block:calc(var(--space-base) * .25);padding-inline:calc(var(--space-base) * .5);border-radius:var(--radius-sm);font-weight:500;text-decoration:none}.c-nav__link:hover,.c-nav__link:focus-visible{background-color:var(--color-bg)}.c-nav__link--active{color:var(--color-primary)}.c-member-chip{border-radius:var(--radius-pill);color:var(--color-text);font-size:var(--text-sm);background-color:#0000;border:1px solid #0000;align-items:center;gap:.5rem;padding-block:.25rem;padding-inline:.5rem .75rem;font-weight:500;line-height:1;text-decoration:none;transition:background-color .15s,border-color .15s;display:inline-flex}.c-member-chip:hover,.c-member-chip:focus-visible{background-color:var(--color-bg);border-color:var(--color-border-strong)}.c-member-chip:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.c-member-chip__avatar{border-radius:var(--radius-circle);flex-shrink:0;width:1.5rem;height:1.5rem;display:block}.c-member-chip__avatar--initial{background-color:var(--color-primary);color:var(--color-surface);font-size:var(--text-xs);text-transform:uppercase;justify-content:center;align-items:center;font-weight:600;display:inline-flex}.c-member-chip__name{text-overflow:ellipsis;white-space:nowrap;max-width:12ch;overflow:hidden}.c-breadcrumb{padding-block:calc(var(--space-base) * .5);padding-inline:var(--space-base);font-size:var(--text-sm);color:var(--color-muted)}.c-breadcrumb__list{flex-wrap:wrap;align-items:center;gap:0;margin:0;padding:0;list-style:none;display:flex}.c-breadcrumb__item{align-items:center;display:inline-flex}.c-breadcrumb__item:not(:last-child):after{content:"›";color:var(--color-muted);margin-inline:.5ch}.c-breadcrumb__link{color:var(--color-muted);text-decoration:none}.c-breadcrumb__link:hover,.c-breadcrumb__link:focus-visible{color:var(--color-text);text-decoration:underline}.c-breadcrumb__current{color:var(--color-text);font-weight:500}.c-budget-nav{padding-block:var(--space-base);padding-inline:var(--space-base);margin-bottom:var(--space-base);border-bottom:1px solid var(--color-border)}.c-budget-nav__years{gap:calc(var(--space-base) * .5);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.c-budget-nav__year{gap:calc(var(--space-base) * .5);flex-direction:column;display:flex}.c-budget-nav__year-link{padding-block:calc(var(--space-base) * .25);padding-inline:calc(var(--space-base) * .75);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);color:var(--color-text);background-color:var(--color-surface);font-weight:500;text-decoration:none;display:inline-block}.c-budget-nav__year-link:hover,.c-budget-nav__year-link:focus-visible{background-color:var(--color-bg)}.c-budget-nav__year-link--active{background-color:var(--color-primary);border-color:var(--color-primary);color:var(--color-surface)}.c-budget-nav__months{gap:calc(var(--space-base) * .25);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.c-budget-nav__month-link{padding-block:calc(var(--space-base) * .2);padding-inline:calc(var(--space-base) * .6);border:1px solid var(--color-border-strong);border-radius:var(--radius-pill);color:var(--color-text);background-color:var(--color-surface);font-size:var(--text-sm);text-decoration:none;display:inline-block}.c-budget-nav__month-link:hover,.c-budget-nav__month-link:focus-visible{background-color:var(--color-bg)}.c-budget-nav__month-link--active{background-color:var(--color-primary);border-color:var(--color-primary);color:var(--color-surface)}.c-month-detail[data-mode=all]>:where(.c-month-summary,.c-add-transaction){display:none}.c-month-summary{padding-block:calc(var(--space-base) * 1.5)}.c-month-summary__table{border-collapse:collapse;width:100%;margin-block-start:var(--space-base)}.c-month-summary__table th,.c-month-summary__table td{padding:calc(var(--space-base) * .5) calc(var(--space-base) * .75);border-bottom:1px solid var(--color-border);text-align:left}.c-month-summary__table th{background-color:var(--color-surface);font-weight:600}.c-month-summary__table tbody tr{transition:background-color .12s}.c-month-summary__table tbody tr:hover{background-color:var(--color-surface)}.c-month-summary__table tfoot td{border-top:2px solid var(--color-text);border-bottom:none}.c-month-summary__table tr.is-over-budget td{color:var(--color-danger)}.c-month-summary__table tr.is-unused td{color:var(--color-muted);font-style:italic}.c-add-transaction{gap:var(--space-base);border-top:1px solid var(--color-border);max-width:32rem;margin-block-start:calc(var(--space-base) * 2);padding-block-start:calc(var(--space-base) * 2);display:grid}.c-add-transaction h2{margin:0}.c-add-transaction__field{gap:calc(var(--space-base) * .25);flex-direction:column;display:flex}.c-add-transaction__field>label,.c-add-transaction__field>legend{font-weight:600;font-size:var(--text-sm)}.c-add-transaction input[type=date],.c-add-transaction input[type=number],.c-add-transaction input[type=text],.c-add-transaction select,.c-add-transaction textarea{padding:calc(var(--space-base) * .5);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background-color:var(--color-bg);color:var(--color-text);font:inherit}.c-add-transaction__type{border:none;flex-flow:wrap;align-items:center;padding:0}.c-add-transaction__type label{align-items:center;gap:calc(var(--space-base) * .25);margin-inline-end:var(--space-base);font-weight:400;display:inline-flex}.c-add-transaction__submit{padding:calc(var(--space-base) * .75) calc(var(--space-base) * 1.5);background-color:var(--color-primary);color:#fff;border-radius:var(--radius-sm);cursor:pointer;border:none;justify-self:start;font-weight:600;transition:background-color .15s}.c-add-transaction__submit:hover{background-color:var(--color-accent)}.c-transactions__table{border-collapse:collapse;width:100%;margin-block-start:var(--space-base)}.c-transactions__table th,.c-transactions__table td{padding:calc(var(--space-base) * .5) calc(var(--space-base) * .75);border-bottom:1px solid var(--color-border);text-align:left;vertical-align:top}.c-transactions__table th{background-color:var(--color-surface);font-weight:600}.c-transactions__table tbody tr:not(.c-transactions__row--editing):not(.c-transactions__row--confirming):hover{background-color:var(--color-surface)}.c-transactions__badge{font-size:var(--text-xs);color:var(--color-muted);margin-inline-start:.25rem;font-style:italic;display:inline-block}.c-transactions__row-actions{gap:calc(var(--space-base) * .5);white-space:nowrap;justify-content:flex-end;display:flex}.c-transactions__row-actions button{color:var(--color-primary);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);cursor:pointer;font-size:var(--text-sm);background-color:#0000;padding:.2rem .6rem;transition:background-color .15s,border-color .15s}.c-transactions__row-actions button:hover{background-color:var(--color-surface);border-color:var(--color-muted)}.c-transactions__add,.c-transactions__toggle{padding:calc(var(--space-base) * .5) var(--space-base);background-color:var(--color-primary);color:#fff;border-radius:var(--radius-sm);cursor:pointer;border:none;margin-block-start:var(--space-base);font-weight:600;transition:background-color .15s}.c-transactions__add:hover,.c-transactions__toggle:hover{background-color:var(--color-accent)}.c-transactions__form-wrap{border:1px solid var(--color-border-strong);border-radius:var(--radius-md);padding:var(--space-base);background-color:var(--color-surface);margin-block-start:var(--space-base)}.c-transactions__form{gap:calc(var(--space-base) * .75);display:grid}.c-transactions__field{gap:calc(var(--space-base) * .25);flex-direction:column;display:flex}.c-transactions__type{border:none;flex-flow:wrap;align-items:center;padding:0}.c-transactions__type label{align-items:center;gap:.25rem;margin-inline-end:var(--space-base);font-weight:400;display:inline-flex}.c-transactions__label{font-weight:600;font-size:var(--text-sm)}.c-transactions__field>input[type=date],.c-transactions__field>input[type=number],.c-transactions__field>input[type=text],.c-transactions__field>select,.c-transactions__field>textarea{padding:calc(var(--space-base) * .5);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background-color:var(--color-bg);color:var(--color-text);font:inherit}.c-transactions__form-actions{gap:calc(var(--space-base) * .5);justify-self:start;display:flex}.c-transactions__form-actions button[type=submit]{background-color:var(--color-primary);color:#fff;padding:calc(var(--space-base) * .5) var(--space-base);border-radius:var(--radius-sm);cursor:pointer;border:none;font-weight:600;transition:background-color .15s}.c-transactions__form-actions button[type=submit]:hover{background-color:var(--color-accent)}.c-transactions__form-actions button[type=button]{color:var(--color-text);border:1px solid var(--color-border-strong);padding:calc(var(--space-base) * .5) var(--space-base);border-radius:var(--radius-sm);cursor:pointer;background-color:#0000}.c-transactions__form-actions button:disabled{opacity:.6;cursor:not-allowed}.c-transactions__row--editing>td{background-color:var(--color-surface);padding:var(--space-base)}.c-transactions__row--confirming>td{background-color:var(--color-surface)}.c-transactions__confirm{align-items:center;gap:calc(var(--space-base) * .5);flex-wrap:wrap;display:flex}.c-transactions__confirm button{border-radius:var(--radius-sm);border:1px solid var(--color-border-strong);cursor:pointer;font-size:var(--text-sm);background-color:#0000;padding:.3rem .75rem}.c-transactions__confirm button:first-of-type{background-color:var(--color-danger);color:#fff;border-color:var(--color-danger)}.c-transactions__confirm button:disabled{opacity:.6;cursor:not-allowed}.c-transactions__error{color:var(--color-danger);font-size:var(--text-sm);margin-block-start:calc(var(--space-base) * .5)}.c-transactions__loading,.c-transactions__empty{color:var(--color-muted);margin-block-start:var(--space-base);font-style:italic}.c-tasks{flex-direction:column;gap:1.5rem;max-width:56rem;margin-block:1rem;margin-inline:auto;padding-inline:1rem;display:flex}.c-tasks__header{justify-content:space-between;align-items:center;gap:1rem;display:flex}.c-tasks__title{font-size:var(--text-xl);margin:0}.c-tasks__refresh{margin:0}.c-tasks__flash{border-radius:var(--radius-md);margin:0;padding:.5rem .75rem}.c-tasks__flash--success{background-color:color-mix(in srgb, var(--color-primary) 12%, var(--color-surface));color:var(--color-text)}.c-tasks__empty{background-color:var(--color-surface);border:1px dashed var(--color-border-strong);border-radius:var(--radius-lg);text-align:center;flex-direction:column;align-items:center;gap:.75rem;padding:2rem 1rem;display:flex}.c-tasks__empty p{color:var(--color-muted);margin:0}.c-tasks__list{flex-direction:column;gap:.5rem;margin:0;display:flex}.c-tasks__list-name{border-bottom:1px solid var(--color-border);font-size:var(--text-base);text-transform:uppercase;letter-spacing:.05em;margin:0;padding-bottom:.25rem}.c-tasks__items{flex-direction:column;gap:.25rem;margin:0;padding:0;list-style:none;display:flex}.c-tasks__item{background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);grid-template-columns:auto 1fr auto;align-items:center;gap:.75rem;padding:.5rem .75rem;display:grid}.c-tasks__item--done .c-tasks__title-row,.c-tasks__item--done .c-tasks__notes{color:var(--color-muted);text-decoration:line-through}.c-tasks__badge{border-radius:var(--radius-circle);flex-shrink:0;justify-content:center;align-items:center;width:1.75rem;height:1.75rem;display:inline-flex;overflow:hidden}.c-tasks__badge--me{outline:2px solid var(--color-primary)}.c-tasks__badge--partner{outline:2px solid var(--color-accent)}.c-tasks__avatar{border-radius:var(--radius-circle);width:1.5rem;height:1.5rem;display:block}.c-tasks__avatar--initial{background-color:var(--color-primary);color:var(--color-surface);font-size:var(--text-xs);text-transform:uppercase;justify-content:center;align-items:center;width:1.5rem;height:1.5rem;font-weight:600;display:inline-flex}.c-tasks__body{flex-direction:column;gap:.125rem;min-width:0;display:flex}.c-tasks__title-row{margin:0;font-weight:500}.c-tasks__notes{color:var(--color-muted);font-size:var(--text-sm);margin:0}.c-tasks__due{color:var(--color-muted);font-size:var(--text-sm);white-space:nowrap}.c-card{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);text-align:center;padding:2rem}.c-card h1{margin:0 0 1rem}.c-card--login{min-width:320px;max-width:400px}.c-card--login h1{font-size:var(--text-lg);margin-bottom:1.5rem}.c-button{border:1px solid var(--color-border-strong);background:var(--color-bg);color:var(--color-text);border-radius:var(--radius-md);cursor:pointer;font-size:var(--text-base);text-align:center;padding:.5rem 1rem;text-decoration:none;transition:background-color .15s,border-color .15s;display:inline-block}.c-button:hover{background:var(--color-surface);border-color:var(--color-muted)}.c-button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.c-button--primary{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.c-button--primary:hover{background:var(--color-accent);border-color:var(--color-accent)}.c-button--secondary{border-color:var(--color-border-strong);color:var(--color-text);background:0 0}.c-button--secondary:hover{background:var(--color-surface);border-color:var(--color-muted)}.c-button--block{width:100%}.c-button--icon{justify-content:center;align-items:center;gap:.5rem;padding:.75rem 1rem;display:flex}.c-alert{border-radius:var(--radius-md);font-size:var(--text-sm);margin-bottom:1rem;padding:.5rem .75rem}.c-alert--error{background:var(--color-danger-surface);border:1px solid var(--color-danger-border);color:var(--color-danger)}.c-account{flex-direction:column;gap:1.5rem;max-width:44rem;margin-block:1rem;margin-inline:auto;padding-inline:1rem;display:flex}.c-account__header{flex-direction:column;gap:.25rem;display:flex}.c-account__title{font-size:var(--text-xl);margin:0}.c-account__member{color:var(--color-muted);margin:0}.c-account__flash{border-radius:var(--radius-md);margin:0;padding:.5rem .75rem}.c-account__flash--success{background-color:var(--color-success-surface);border:1px solid var(--color-success-border);color:var(--color-text)}.c-account__section-title{font-size:var(--text-lg);margin:0}.c-account__connections{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.c-account__connection{background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:.875rem 1rem;display:flex}.c-account__connection-info{flex-direction:column;gap:.25rem;min-width:0;display:flex}.c-account__connection-name{font-weight:600}.c-account__connection-status{border-radius:var(--radius-pill);font-size:var(--text-xs);align-self:flex-start;padding:.125rem .5rem;font-weight:500}.c-account__connection-status--on{background-color:var(--color-success-surface);border:1px solid var(--color-success-border);color:var(--color-success)}.c-account__connection-status--off{background-color:var(--color-bg);border:1px solid var(--color-border-strong);color:var(--color-muted)}.c-account__connection-actions{flex-shrink:0}.c-account__connection-actions form{margin:0}.c-dashboard{flex-direction:column;gap:1.5rem;max-width:44rem;margin-block:1rem;margin-inline:auto;padding-inline:1rem;display:flex}.c-dashboard__header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.c-dashboard__greeting{font-size:var(--text-xl);margin:0}.c-dashboard__signout{margin:0}.c-dashboard__budget{text-align:left}.c-dashboard__budget-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 1rem;margin-bottom:1.25rem;display:flex}.c-dashboard__budget-title{font-size:var(--text-lg);margin:0}.c-dashboard__budget-link{font-size:var(--text-sm);white-space:nowrap}.c-dashboard__empty{color:var(--color-muted);margin:0}.c-dashboard__stats{grid-template-columns:repeat(auto-fit,minmax(7rem,1fr));gap:1rem;display:grid}.c-dashboard__categories{flex-direction:column;gap:.75rem;margin-block-start:1.5rem;display:flex}.c-dashboard__categories-title{color:var(--color-muted);font-size:var(--text-xs);letter-spacing:.05em;text-transform:uppercase;margin:0}.c-dashboard__footnote{color:var(--color-muted);font-size:var(--text-sm);margin:0;margin-block-start:1.5rem}.c-stat{flex-direction:column;gap:.125rem;display:flex}.c-stat__label{color:var(--color-muted);font-size:var(--text-xs);letter-spacing:.05em;text-transform:uppercase}.c-stat__value{font-size:var(--text-lg);font-weight:600}.c-stat__value--positive{color:var(--color-success)}.c-stat__value--negative{color:var(--color-danger)}.c-spend-bar{flex-direction:column;gap:.25rem;display:flex}.c-spend-bar__row{font-size:var(--text-sm);justify-content:space-between;display:flex}.c-spend-bar__name{font-weight:500}.c-spend-bar__amount{color:var(--color-muted)}.c-spend-bar__track{background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-pill);height:.5rem;overflow:hidden}.c-spend-bar__fill{background-color:var(--color-primary);border-radius:var(--radius-pill);height:100%;transition:width .3s}.u-text-right{text-align:right}.u-text-left{text-align:left}.u-text-center{text-align:center}
