@import "https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;500;600;700;800&display=swap";*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--color-income:#22c55e;--color-expense:#ef4444;--color-balance:#3b82f6;--color-bg:#f2f4f8;--color-surface:#fff;--color-border:#00000014;--color-text:#1c1c2e;--color-muted:#6b7280;--color-muted-bg:#f0f2f6;--color-secondary-bg:#eef2ff;--radius:12px;--radius-sm:8px;--shadow:0 1px 3px #0000000a, 0 1px 2px #0000000f;--shadow-lg:0 8px 32px #0000001a;--transition:.18s ease}body{background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;min-height:100vh;font-family:Noto Sans JP,-apple-system,BlinkMacSystemFont,sans-serif;font-size:16px;line-height:1.5}.app{max-width:1100px;margin:0 auto;padding:20px}.desktop-layout{max-width:1100px;margin:0 auto;padding:20px;display:block}.mobile-layout{display:none}@media (width<=768px){.desktop-layout{display:none}.mobile-layout{flex-direction:column;min-height:100vh;display:flex}}.header{background:var(--color-surface);border-radius:var(--radius);border:1px solid var(--color-border);box-shadow:var(--shadow);justify-content:space-between;align-items:center;margin-bottom:24px;padding:14px 20px;display:flex}.header__left{flex-direction:column;gap:2px;display:flex}.header__sub{color:var(--color-muted);font-size:.68rem;font-weight:500}.header__month{align-items:center;gap:10px;display:flex}.header__month-label{font-size:1rem;font-weight:800}.header__right{align-items:center;gap:10px;display:flex}.header__avatar{background:var(--color-balance);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;display:flex;overflow:hidden}.topbar{background:var(--color-surface);border-bottom:1px solid var(--color-border);z-index:10;justify-content:space-between;align-items:center;padding:12px 16px;display:flex;position:sticky;top:0}.topbar__left{flex-direction:column;gap:0;display:flex}.topbar__year{color:var(--color-muted);font-size:.65rem;font-weight:500}.topbar__title-row{align-items:center;gap:8px;display:flex}.topbar__title{font-size:1.05rem;font-weight:800}.topbar__right{align-items:center;gap:12px;display:flex}.topbar__avatar{background:var(--color-balance);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;display:flex;overflow:hidden}.btn-icon--sm{width:30px;height:30px;font-size:1rem}.mobile-content{flex-direction:column;flex:1;gap:12px;padding:12px 16px 80px;display:flex;overflow-y:auto}.mobile-content .summary{grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:0}.mobile-content .summary__card{gap:4px;padding:10px 12px}.mobile-content .summary__label{font-size:.58rem}.mobile-content .summary__amount{font-size:.92rem}.mobile-content .card{box-shadow:none;background:0 0;border:none;padding:0}.mobile-content .list-header{padding:0 4px}.mobile-content .list-header .card__title{font-size:.82rem;font-weight:800}.mobile-content .list-filter{display:none}.mobile-content .transaction-list{gap:6px}.mobile-content .transaction-item{border-radius:12px;padding:10px 12px;box-shadow:0 1px 3px #0000000a}.mobile-content .transaction-item__icon{border-radius:10px;width:34px;height:34px}.mobile-content .transaction-item__desc{font-size:.8rem}.mobile-content .transaction-item__meta{font-size:.64rem}.mobile-content .transaction-item__amount{font-size:.8rem}.mobile-content .list-empty{padding:20px 0;font-size:.8rem}.mobile-list-header{justify-content:space-between;align-items:center;padding:0 4px;display:flex}.mobile-list-header__title{font-size:.82rem;font-weight:800}.mobile-list-header__link{color:var(--color-balance);cursor:pointer;background:0 0;border:none;font-family:inherit;font-size:.7rem;font-weight:600}.bottom-nav{padding:8px 0 max(10px, env(safe-area-inset-bottom));background:var(--color-surface);border-top:1px solid var(--color-border);z-index:20;justify-content:space-around;align-items:center;display:flex;position:fixed;bottom:0;left:0;right:0}.bottom-nav__item{cursor:pointer;color:var(--color-muted);transition:color var(--transition);background:0 0;border:none;flex-direction:column;align-items:center;gap:2px;padding:0;font-family:inherit;font-size:.6rem;font-weight:600;display:flex}.bottom-nav__item.active{color:var(--color-balance)}.bottom-nav__item--add{position:relative}.bottom-nav__add-btn{background:var(--color-balance);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:42px;height:42px;margin-top:-16px;display:flex;box-shadow:0 4px 12px #3b82f659}.btn-icon{background:var(--color-muted-bg);cursor:pointer;width:34px;height:34px;transition:background var(--transition);color:var(--color-muted);border:none;border-radius:50%;justify-content:center;align-items:center;font-size:1.1rem;display:flex}.btn-icon:hover{background:var(--color-border);color:var(--color-text)}.error-banner{color:#991b1b;border-radius:var(--radius-sm);background:#fef2f2;border:1px solid #ef44441f;margin-bottom:16px;padding:12px 16px;font-size:.85rem;font-weight:500}.loading-banner{text-align:center;color:var(--color-muted);margin-bottom:16px;padding:12px;font-size:.85rem}.warning-banner{color:#92400e;border-radius:var(--radius-sm);background:#fffbeb;border:1px solid #f59e0b26;margin-bottom:16px;padding:12px 16px;font-size:.85rem;font-weight:500}.summary{grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:24px;display:grid}.summary__card{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--color-border);border-left:4px solid #0000;flex-direction:column;gap:8px;padding:16px 18px;display:flex}.summary__card--income{border-left-color:var(--color-income)}.summary__card--expense{border-left-color:var(--color-expense)}.summary__card--balance{border-left-color:var(--color-balance)}.summary__label{color:var(--color-muted);text-transform:uppercase;letter-spacing:.08em;font-size:.7rem;font-weight:600}.summary__header{justify-content:space-between;align-items:center;display:flex}.summary__amount{font-size:1.3rem;font-weight:800}.summary__card--income .summary__amount{color:var(--color-income)}.summary__card--expense .summary__amount{color:var(--color-expense)}.summary__card--balance .summary__amount{color:var(--color-balance)}.main{grid-template-columns:340px 1fr;align-items:start;gap:20px;display:grid}@media (width<=768px){.main{grid-template-columns:1fr}}.card{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--color-border);margin-bottom:16px;padding:20px}.card:last-child{margin-bottom:0}.card__title{margin-bottom:16px;font-size:.95rem;font-weight:700}.form{flex-direction:column;gap:14px;display:flex}.form__group{flex-direction:column;gap:6px;display:flex}.form__label{color:var(--color-muted);font-size:.78rem;font-weight:600}.form__input,.form__select{border:1.5px solid var(--color-border);border-radius:var(--radius-sm);transition:border-color var(--transition), box-shadow var(--transition), background var(--transition);background:var(--color-muted-bg);color:var(--color-text);width:100%;padding:10px 14px;font-family:inherit;font-size:.9rem}.form__input:focus,.form__select:focus{border-color:var(--color-balance);background:#fff;outline:none;box-shadow:0 0 0 3px #3b82f61f}.form__select--sm{width:auto;padding:6px 10px;font-size:.82rem}.form__radio-group{gap:8px;display:flex}.radio-label{cursor:pointer}.radio-label input[type=radio]{display:none}.radio-badge{border-radius:var(--radius-sm);background:var(--color-muted-bg);transition:all var(--transition);-webkit-user-select:none;user-select:none;border:none;align-items:center;padding:8px 20px;font-size:.85rem;font-weight:700;display:inline-flex}.radio-badge--income{color:var(--color-income)}.radio-badge--expense{color:var(--color-expense)}.radio-label input:checked+.radio-badge--income{background:var(--color-income);color:#fff}.radio-label input:checked+.radio-badge--expense{background:var(--color-expense);color:#fff}.form__error{color:var(--color-expense);min-height:1.2em;font-size:.8rem;font-weight:500}.btn{border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition);border:none;padding:12px 20px;font-family:inherit;font-size:.9rem;font-weight:700}.btn--primary{background:var(--color-balance);color:#fff}.btn--primary:hover{background:#2563eb;transform:translateY(-1px);box-shadow:0 4px 12px #3b82f640}.btn--primary:active{transform:translateY(0)}.btn--primary:disabled{opacity:.6;cursor:not-allowed;box-shadow:none;transform:none}.btn--danger{background:var(--color-expense);color:#fff}.btn--danger:hover{background:#dc2626}.btn--ghost{border:1.5px solid var(--color-border);color:var(--color-text);background:0 0}.btn--ghost:hover{background:var(--color-muted-bg)}.btn--full{width:100%}.chart-wrapper{text-align:center;position:relative}.chart-empty{color:var(--color-muted);margin-top:12px;font-size:.85rem}.list-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:16px;display:flex}.list-header .card__title{margin-bottom:0}.list-filter{flex-wrap:wrap;gap:8px;display:flex}.transaction-list{flex-direction:column;gap:8px;list-style:none;display:flex}.transaction-item{border-radius:var(--radius);background:var(--color-surface);border:1px solid var(--color-border);transition:all var(--transition);align-items:center;gap:12px;padding:12px 14px;display:flex}.transaction-item:hover{border-color:#3b82f62e;box-shadow:0 2px 8px #0000000a}.transaction-item__icon{border-radius:30%;flex-shrink:0;justify-content:center;align-items:center;width:38px;height:38px;font-size:1.1rem;display:flex}.transaction-item__icon--income{background:#22c55e1f}.transaction-item__icon--expense{background:#ef44441a}.transaction-item__info{flex:1;min-width:0}.transaction-item__desc{white-space:nowrap;text-overflow:ellipsis;font-size:.88rem;font-weight:700;overflow:hidden}.transaction-item__meta{color:var(--color-muted);margin-top:2px;font-size:.72rem;font-weight:500}.transaction-item__amount{flex-shrink:0;font-size:.92rem;font-weight:800}.transaction-item__amount--income{color:var(--color-income)}.transaction-item__amount--expense{color:var(--color-expense)}.transaction-item__delete{cursor:pointer;color:var(--color-muted);transition:color var(--transition), background var(--transition);background:0 0;border:none;border-radius:50%;flex-shrink:0;padding:6px;font-size:1rem}.transaction-item__delete:hover{color:var(--color-expense);background:#ef444414}.list-empty{text-align:center;color:var(--color-muted);padding:40px 0;font-size:.85rem}.modal-overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:100;opacity:0;pointer-events:none;transition:opacity var(--transition);background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-overlay.active{opacity:1;pointer-events:all}.modal{background:var(--color-surface);width:340px;max-width:90vw;box-shadow:var(--shadow-lg);transition:transform var(--transition);text-align:center;border-radius:24px;flex-direction:column;align-items:center;gap:12px;padding:32px;display:flex;transform:translateY(16px)}.modal-overlay.active .modal{transform:translateY(0)}.modal__icon{background:#fef2f2;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;display:flex}.modal__title{font-size:1rem;font-weight:800}.modal__body{color:var(--color-muted);font-size:.82rem;line-height:1.6}.modal__actions{gap:12px;width:100%;margin-top:8px;display:flex}.modal__actions .btn{border-radius:var(--radius);flex:1}.auth-page{background:var(--color-bg);justify-content:center;align-items:center;min-height:100vh;padding:16px;display:flex}.auth-card{background:var(--color-surface);width:100%;max-width:400px;box-shadow:var(--shadow-lg);border:1px solid var(--color-border);border-radius:20px;flex-direction:column;gap:24px;padding:40px 32px;display:flex}.auth-logo-wrap{flex-direction:column;align-items:center;gap:10px;display:flex}.auth-app-name{color:var(--color-text);font-size:1.15rem;font-weight:800}.auth-app-sub{color:var(--color-muted);margin-top:-4px;font-size:.78rem}.auth-icon-box{background:var(--color-secondary-bg);border-radius:16px;justify-content:center;align-items:center;width:64px;height:64px;margin:0 auto;display:flex}.auth-desc{color:var(--color-muted);text-align:center;font-size:.82rem;line-height:1.6}.auth-desc strong{color:var(--color-text)}.auth-desc--success{color:var(--color-income);font-weight:600}.auth-links{flex-direction:column;align-items:center;gap:8px;margin-top:4px;display:flex}.auth-link{color:var(--color-balance);cursor:pointer;background:0 0;border:none;font-family:inherit;font-size:.82rem;font-weight:600}.auth-link:hover{color:#1d4ed8}.auth-link-text{color:var(--color-muted);font-size:.82rem}.auth-link-bold{color:var(--color-balance);cursor:pointer;background:0 0;border:none;font-family:inherit;font-size:.82rem;font-weight:700}.auth-link-bold:hover{color:#1d4ed8}.auth-notice{border-radius:var(--radius-sm);color:#92400e;background:#fff7ed;align-items:center;gap:8px;padding:12px 14px;font-size:.78rem;font-weight:500;display:flex}.auth-success-banner{border-radius:var(--radius-sm);color:#166534;background:#f0fdf4;align-items:center;gap:8px;padding:12px 14px;font-size:.82rem;font-weight:600;display:flex}.pw-input-wrap{align-items:center;display:flex;position:relative}.pw-input-wrap .form__input{padding-right:44px}.pw-toggle{cursor:pointer;color:var(--color-muted);transition:color var(--transition);background:0 0;border:none;padding:4px;font-size:1rem;line-height:1;position:absolute;right:12px}.pw-toggle:hover{color:var(--color-text)}.btn--sm{border-radius:20px;align-items:center;gap:4px;padding:6px 14px;font-size:.78rem;display:flex}.avatar-selector{width:380px;max-width:90vw}.avatar-selector__grid{grid-template-columns:repeat(4,1fr);gap:10px;width:100%;margin-bottom:16px;display:grid}.avatar-selector__item{border:2px solid var(--color-border);background:var(--color-muted-bg);cursor:pointer;width:52px;height:52px;transition:all var(--transition);color:var(--color-muted);border-radius:50%;justify-content:center;align-items:center;margin:0 auto;display:flex}.avatar-selector__item:hover{border-color:var(--color-balance);color:var(--color-balance);background:var(--color-secondary-bg)}.avatar-selector__item--selected{border-color:var(--color-balance);background:var(--color-secondary-bg);color:var(--color-balance);box-shadow:0 0 0 3px #3b82f626}.header__avatar--clickable,.topbar__avatar--clickable{cursor:pointer;transition:transform var(--transition), box-shadow var(--transition)}.header__avatar--clickable:hover,.topbar__avatar--clickable:hover{transform:scale(1.1);box-shadow:0 2px 8px #3b82f640}.avatar-selector__upload{border-top:1px solid var(--color-border);margin-top:16px;padding-top:16px}.avatar-selector__upload-header{margin-bottom:10px}.avatar-selector__upload-label{color:var(--color-text);font-size:.85rem;font-weight:600}.avatar-selector__upload-area{justify-content:center;align-items:center;margin-bottom:8px;display:flex}.avatar-selector__upload-btn{border:2px dashed var(--color-border);border-radius:var(--radius);background:var(--color-muted-bg);color:var(--color-muted);cursor:pointer;transition:all var(--transition);align-items:center;gap:6px;padding:10px 18px;font-size:.82rem;display:flex}.avatar-selector__upload-btn:hover{border-color:var(--color-balance);color:var(--color-balance);background:var(--color-secondary-bg)}.avatar-selector__preview{align-items:center;gap:12px;display:flex}.avatar-selector__preview-img{object-fit:cover;border:2px solid var(--color-balance);border-radius:50%;width:56px;height:56px;box-shadow:0 0 0 3px #3b82f626}.avatar-selector__upload-hint{color:var(--color-muted);margin:0;font-size:.72rem}.avatar-selector__error{color:#ef4444;margin:8px 0 0;font-size:.78rem}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spin{animation:1s linear infinite spin}.family-member-list{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--color-border);margin-bottom:16px;padding:20px}.family-member-list__header{align-items:center;gap:8px;margin-bottom:16px;display:flex}.family-member-list__title{font-size:.95rem;font-weight:700}.family-member-list__count{color:var(--color-muted);font-size:.75rem;font-weight:600}.family-member-list__empty{text-align:center;color:var(--color-muted);padding:24px 0;font-size:.85rem}.family-member-list__items{flex-direction:column;gap:8px;list-style:none;display:flex}.family-member-list__item{border-radius:var(--radius-sm);border:1px solid var(--color-border);transition:border-color var(--transition);justify-content:space-between;align-items:center;padding:12px 14px;display:flex}.family-member-list__item:hover{border-color:#3b82f62e}.family-member-list__info{flex-direction:column;gap:2px;display:flex}.family-member-list__name{font-size:.88rem;font-weight:600}.family-member-list__you{color:var(--color-muted);margin-left:4px;font-size:.75rem}.family-member-list__role{color:var(--color-muted);align-items:center;gap:4px;font-size:.72rem;font-weight:500;display:flex}.family-member-list__role--owner{color:var(--color-balance);font-weight:600}.family-member-list__actions{gap:6px;display:flex}.pending-invitation-list{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--color-border);margin-bottom:16px;padding:20px}.pending-invitation-list__header{align-items:center;gap:8px;margin-bottom:16px;display:flex}.pending-invitation-list__title{font-size:.95rem;font-weight:700}.pending-invitation-list__count{color:var(--color-muted);font-size:.75rem;font-weight:600}.pending-invitation-list__empty{text-align:center;color:var(--color-muted);padding:24px 0;font-size:.85rem}.pending-invitation-list__items{flex-direction:column;gap:8px;list-style:none;display:flex}.pending-invitation-list__item{border-radius:var(--radius-sm);border:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:12px 14px;display:flex}.pending-invitation-list__info{flex-direction:column;gap:2px;display:flex}.pending-invitation-list__email{font-size:.85rem;font-weight:600}.pending-invitation-list__date{color:var(--color-muted);align-items:center;gap:4px;font-size:.72rem;display:flex}.invitation-card{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--color-border);margin-bottom:12px;padding:16px 20px}.invitation-card__header{align-items:center;gap:8px;margin-bottom:10px;display:flex}.invitation-card__family-name{font-size:.95rem;font-weight:700}.invitation-card__body{margin-bottom:12px}.invitation-card__inviter{color:var(--color-text);margin-bottom:4px;font-size:.82rem}.invitation-card__date{color:var(--color-muted);align-items:center;gap:4px;font-size:.72rem;display:flex}.invitation-card__actions{gap:8px;display:flex}.invite-form{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--color-border);margin-bottom:16px;padding:20px}.invite-form__field{flex-direction:column;gap:8px;display:flex}.invite-form__label{font-size:.85rem;font-weight:700}.invite-form__input-row{gap:8px;display:flex}.invite-form__input{border:1.5px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-muted-bg);color:var(--color-text);transition:border-color var(--transition), box-shadow var(--transition);flex:1;padding:10px 14px;font-family:inherit;font-size:.88rem}.invite-form__input:focus{border-color:var(--color-balance);background:#fff;outline:none;box-shadow:0 0 0 3px #3b82f61f}.invite-form__input--error{border-color:var(--color-expense)}.invite-form__error{color:var(--color-expense);font-size:.78rem;font-weight:500}.view-mode-toggle{background:var(--color-muted-bg);border-radius:var(--radius-sm);border:1px solid var(--color-border);gap:0;margin-bottom:16px;padding:3px;display:inline-flex}.view-mode-toggle__btn{cursor:pointer;color:var(--color-muted);transition:all var(--transition);background:0 0;border:none;border-radius:6px;align-items:center;gap:4px;padding:6px 14px;font-family:inherit;font-size:.78rem;font-weight:600;display:flex}.view-mode-toggle__btn--active{background:var(--color-surface);color:var(--color-balance);box-shadow:var(--shadow)}.view-mode-toggle__btn:disabled{opacity:.5;cursor:not-allowed}.family-transaction-list{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--color-border);margin-bottom:16px;padding:20px}.family-transaction-list__header{margin-bottom:16px}.family-transaction-list__title{font-size:.95rem;font-weight:700}.family-transaction-list__empty{text-align:center;color:var(--color-muted);padding:40px 0;font-size:.85rem}.family-transaction-list__items{flex-direction:column;gap:8px;list-style:none;display:flex}.family-transaction-list__item{border-radius:var(--radius-sm);border:1px solid var(--color-border);transition:border-color var(--transition);justify-content:space-between;align-items:center;padding:12px 14px;display:flex}.family-transaction-list__item:hover{border-color:#3b82f62e}.family-transaction-list__info{flex:1;min-width:0}.family-transaction-list__desc{white-space:nowrap;text-overflow:ellipsis;font-size:.88rem;font-weight:700;overflow:hidden}.family-transaction-list__meta{color:var(--color-muted);margin-top:2px;font-size:.72rem;font-weight:500}.family-transaction-list__member{color:var(--color-balance);font-weight:600}.family-transaction-list__amount{flex-shrink:0;font-size:.92rem;font-weight:800}.family-transaction-list__amount--income{color:var(--color-income)}.family-transaction-list__amount--expense{color:var(--color-expense)}.family-transaction-list__pagination{border-top:1px solid var(--color-border);justify-content:center;align-items:center;gap:12px;margin-top:16px;padding-top:16px;display:flex}.family-transaction-list__page{color:var(--color-muted);font-size:.82rem;font-weight:600}.family-summary-card{grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:16px;display:grid}.family-summary-card__item{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--color-border);border-left:4px solid #0000;flex-direction:column;gap:8px;padding:16px 18px;display:flex}.family-summary-card__item--income{border-left-color:var(--color-income)}.family-summary-card__item--expense{border-left-color:var(--color-expense)}.family-summary-card__item--balance{border-left-color:var(--color-balance)}.family-summary-card__header{justify-content:space-between;align-items:center;display:flex}.family-summary-card__label{color:var(--color-muted);text-transform:uppercase;letter-spacing:.08em;font-size:.7rem;font-weight:600}.family-summary-card__amount{font-size:1.2rem;font-weight:800}.family-summary-card__item--income .family-summary-card__amount{color:var(--color-income)}.family-summary-card__item--expense .family-summary-card__amount{color:var(--color-expense)}.family-summary-card__item--balance .family-summary-card__amount{color:var(--color-balance)}.family-category-chart{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--color-border);margin-bottom:16px;padding:20px}.family-category-chart__title{margin-bottom:16px;font-size:.95rem;font-weight:700}.family-category-chart__wrapper{text-align:center;position:relative}.family-category-chart__empty{color:var(--color-muted);margin-top:12px;font-size:.85rem}.family-management-page{max-width:600px;margin:0 auto;padding:20px}.family-management-page__header{background:var(--color-surface);border-radius:var(--radius);border:1px solid var(--color-border);box-shadow:var(--shadow);align-items:center;gap:10px;margin-bottom:24px;padding:14px 20px;display:flex}.family-management-page__title{font-size:1.1rem;font-weight:800}.family-management-page__empty{text-align:center;color:var(--color-muted);background:var(--color-surface);border-radius:var(--radius);border:1px solid var(--color-border);box-shadow:var(--shadow);flex-direction:column;align-items:center;gap:12px;padding:60px 20px;display:flex}.family-management-page__empty-title{color:var(--color-text);font-size:1.1rem;font-weight:700}.family-management-page__empty-desc{margin-bottom:8px;font-size:.85rem}.family-management-page__actions{gap:8px;margin-top:20px;display:flex}.family-create-page{max-width:480px;margin:0 auto;padding:20px}.family-create-page__header{margin-bottom:24px}.family-create-page__content{text-align:center;flex-direction:column;align-items:center;gap:16px;display:flex}.family-create-page__icon{color:var(--color-balance)}.family-create-page__title{font-size:1.15rem;font-weight:800}.family-create-page__desc{color:var(--color-muted);font-size:.85rem}.family-create-page__form{text-align:left;width:100%}.form__input--error{border-color:var(--color-expense)}.invitation-list-page{max-width:600px;margin:0 auto;padding:20px}.invitation-list-page__header{background:var(--color-surface);border-radius:var(--radius);border:1px solid var(--color-border);box-shadow:var(--shadow);align-items:center;gap:10px;margin-bottom:24px;padding:14px 20px;display:flex}.invitation-list-page__title{font-size:1.1rem;font-weight:800}.invitation-list-page__empty{text-align:center;color:var(--color-muted);background:var(--color-surface);border-radius:var(--radius);border:1px solid var(--color-border);box-shadow:var(--shadow);flex-direction:column;align-items:center;gap:12px;padding:60px 20px;display:flex}.invitation-list-page__empty-text{font-size:.85rem}.invitation-list-page__list{flex-direction:column;gap:12px;display:flex}.image-attach__input{display:none}.image-attach__btn{border:2px dashed var(--color-border);border-radius:var(--radius-sm);background:var(--color-muted-bg);color:var(--color-muted);cursor:pointer;transition:all var(--transition);align-items:center;gap:8px;padding:10px 18px;font-family:inherit;font-size:.82rem;font-weight:600;display:inline-flex}.image-attach__btn:hover{border-color:var(--color-balance);color:var(--color-balance);background:var(--color-secondary-bg)}.image-attach__preview{border-radius:var(--radius-sm);border:1px solid var(--color-border);display:inline-block;position:relative;overflow:hidden}.image-attach__preview-img{object-fit:cover;border-radius:var(--radius-sm);max-width:100%;max-height:120px;display:block}.image-attach__remove{color:#fff;cursor:pointer;width:24px;height:24px;transition:background var(--transition);background:#0009;border:none;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;top:4px;right:4px}.image-attach__remove:hover{background:var(--color-expense)}.transaction-item__thumbnail{cursor:pointer;border:1px solid var(--color-border);width:51px;height:38px;transition:transform var(--transition), box-shadow var(--transition);background:0 0;border-radius:6px;flex-shrink:0;padding:0;overflow:hidden}.transaction-item__thumbnail:hover{transform:scale(1.1);box-shadow:0 2px 8px #0000001f}.transaction-item__thumbnail-img{object-fit:cover;width:100%;height:100%;display:block}.image-modal__overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:200;background:#000000b3;justify-content:center;align-items:center;animation:.2s fadeIn;display:flex;position:fixed;inset:0}.image-modal__content{border-radius:var(--radius);max-width:90vw;max-height:85vh;box-shadow:var(--shadow-lg);position:relative;overflow:hidden}.image-modal__img{object-fit:contain;border-radius:var(--radius);max-width:90vw;max-height:85vh;display:block}.image-modal__close{color:#fff;cursor:pointer;width:36px;height:36px;transition:background var(--transition);background:#00000080;border:none;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;top:8px;right:8px}.image-modal__close:hover{background:var(--color-expense)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.mobile-content .transaction-item__thumbnail{border-radius:5px;width:51px;height:38px}.modal-overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:100;background:#00000080;justify-content:center;align-items:center;animation:.2s fadeIn;display:flex;position:fixed;inset:0}.modal-content{background:var(--color-surface);border-radius:var(--radius);width:480px;max-width:90vw;max-height:80vh;box-shadow:var(--shadow-lg);padding:24px;overflow-y:auto}.modal-content--subcategory{width:520px}.subcategory-manager__header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.subcategory-manager__header .card__title{margin-bottom:0}.subcategory-manager__form{flex-wrap:wrap;align-items:flex-end;gap:8px;margin-bottom:20px;display:flex}.subcategory-manager__form .form__select--sm{flex:1;min-width:120px}.subcategory-manager__form .form__input--sm{border:1.5px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-muted-bg);min-width:100px;color:var(--color-text);transition:border-color var(--transition), box-shadow var(--transition);flex:1;padding:6px 10px;font-family:inherit;font-size:.82rem}.subcategory-manager__form .form__input--sm:focus{border-color:var(--color-balance);background:#fff;outline:none;box-shadow:0 0 0 3px #3b82f61f}.subcategory-manager__list{flex-direction:column;gap:16px;display:flex}.subcategory-manager__empty{text-align:center;color:var(--color-muted);padding:24px 0;font-size:.85rem}.subcategory-manager__group{flex-direction:column;gap:6px;display:flex}.subcategory-manager__group-title{color:var(--color-text);align-items:center;gap:6px;font-size:.82rem;font-weight:700;display:flex}.subcategory-manager__group-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.subcategory-manager__items{flex-direction:column;gap:4px;padding-left:16px;list-style:none;display:flex}.subcategory-manager__item{border-radius:var(--radius-sm);border:1px solid var(--color-border);transition:border-color var(--transition);justify-content:space-between;align-items:center;padding:6px 10px;display:flex}.subcategory-manager__item:hover{border-color:#3b82f62e}.subcategory-manager__item-label{font-size:.82rem;font-weight:500}.subcategory-manager__item-delete{cursor:pointer;color:var(--color-muted);transition:color var(--transition), background var(--transition);background:0 0;border:none;border-radius:50%;padding:4px}.subcategory-manager__item-delete:hover{color:var(--color-expense);background:#ef444414}
