:root{--bg: #f5f6f8;--surface: #ffffff;--text: #1f2328;--muted: #6b7280;--primary: #2f6fed;--primary-dark: #1f56c7;--border: #e3e5e9;--paid: #16a34a;--pending: #d97706;--danger: #dc2626;--sunday: #dc2626;--saturday: #2f6fed;--radius: 16px;--shadow: 0 6px 20px rgba(20, 20, 30, .06)}@media (prefers-color-scheme: dark){:root{--bg: #18191c;--surface: #232427;--text: #ececee;--muted: #9a9ca3;--border: #33353a;--shadow: 0 6px 20px rgba(0, 0, 0, .35);--saturday: #6d9bff}}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Apple SD Gothic Neo,Malgun Gothic,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased}.app{max-width:480px;margin:0 auto;padding:20px 16px 48px}.app__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.app__title{font-size:22px;margin:0}.app__header-actions{display:flex;gap:8px}.app__month-nav{display:flex;align-items:center;justify-content:center;gap:16px;margin-bottom:16px}.app__month{margin:0;color:var(--muted);font-size:14px;min-width:96px;text-align:center}.app__month-arrow{background:none;border:none;color:var(--text);font-size:20px;line-height:1;padding:4px 12px;cursor:pointer;border-radius:8px}.app__month-arrow:hover:not(:disabled){background:var(--surface)}.app__month-arrow:disabled{opacity:.35;cursor:default}.app__main{display:flex;flex-direction:column;gap:14px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.summary__remaining{display:flex;flex-direction:column;gap:4px;padding-bottom:14px;border-bottom:1px solid var(--border)}.summary__remaining-label{color:var(--muted);font-size:13px}.summary__remaining-value{font-size:30px;font-weight:800;color:var(--primary)}.summary__remaining-value.is-negative{color:var(--danger)}.summary__rows{display:flex;flex-direction:column;gap:8px;margin-top:12px}.summary__row{display:flex;justify-content:space-between;font-size:14px}.muted{color:var(--muted)}.deposit{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:4px 2px;font-size:14px}.deposit__actions{display:flex;gap:8px}.deposit__actions .btn{flex:1}.deposit__preview{color:var(--muted);font-size:13px;margin:-4px 0 10px}.input{width:100%;padding:12px 14px;border:1px solid var(--border);border-radius:12px;background:var(--bg);color:var(--text);font-size:16px;margin-bottom:10px}.input:focus{outline:2px solid var(--primary);outline-offset:1px}.btn{border:none;border-radius:12px;padding:11px 16px;font-size:15px;font-weight:600;cursor:pointer;transition:filter .15s ease}.btn:disabled{opacity:.6;cursor:default}.btn--primary{background:var(--primary);color:#fff}.btn--primary:hover:not(:disabled){background:var(--primary-dark)}.btn--ghost{background:transparent;color:var(--muted);border:1px solid var(--border)}.btn--block{width:100%}.btn-group{display:flex}.btn-group .btn{border-radius:0}.btn-group .btn:first-child{border-top-left-radius:12px;border-bottom-left-radius:12px}.btn-group .btn:last-child{border-top-right-radius:12px;border-bottom-right-radius:12px;border-left:none}.addform__title{font-size:16px;margin:0 0 12px}.addform__owners{display:flex;gap:8px;margin:2px 0 12px}.chip{flex:1;padding:10px;border:1px solid var(--border);border-radius:12px;background:var(--bg);color:var(--text);font-size:14px;font-weight:600;cursor:pointer}.chip--small{padding:8px 4px;font-size:12px;font-weight:500}.chip.is-active{background:var(--primary);color:#fff;border-color:var(--primary)}.calendar{padding:14px 8px}.calendar__weekdays,.calendar__grid{display:grid;grid-template-columns:repeat(7,1fr)}.calendar__weekdays{margin-bottom:6px}.calendar__weekday{text-align:center;font-size:11px;color:var(--muted)}.calendar__weekday.is-sun{color:var(--sunday)}.calendar__weekday.is-sat{color:var(--saturday)}.calendar__cell{min-height:52px;display:flex;flex-direction:column;align-items:center;gap:1px;padding:4px 1px;border-radius:8px;background:none;border:none;font:inherit;cursor:pointer}.calendar__cell--empty{min-height:0;cursor:default}.calendar__cell.is-today{background:var(--primary)}.calendar__cell.is-selected{box-shadow:0 0 0 2px var(--primary) inset}.calendar__cell.is-today .calendar__day{color:#fff;font-weight:700}.calendar__day{font-size:12px;color:var(--text)}.calendar__day.is-sun{color:var(--sunday)}.calendar__day.is-sat{color:var(--saturday)}.calendar__income,.calendar__expense{font-size:10px;font-weight:700;line-height:1.3;white-space:nowrap}.calendar__income{color:var(--paid)}.calendar__expense{color:var(--danger)}.calendar__cell.is-today .calendar__income,.calendar__cell.is-today .calendar__expense{color:#fff}.purchases{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.purchase{display:flex;gap:12px;align-items:flex-start;padding:12px;border:1px solid var(--border);border-radius:12px}.day-detail{margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}.day-detail__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.day-detail__title{font-weight:700;font-size:14px}.day-detail__list{list-style:none;margin:0 0 10px;padding:0;display:flex;flex-direction:column;gap:6px}.day-detail__row{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:13px}.day-detail__check{display:flex;align-items:center;gap:8px;min-width:0}.day-detail__check input{width:18px;height:18px;accent-color:var(--primary);flex-shrink:0}.day-detail__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.day-detail__amount{font-weight:700;white-space:nowrap}.day-detail__amount.is-income{color:var(--paid)}.day-detail__amount.is-expense,.day-detail__amount.is-negative{color:var(--danger)}.purchase.is-paid{opacity:.62}.purchase__check input{width:22px;height:22px;accent-color:var(--paid)}.purchase__body{flex:1;min-width:0}.purchase__top{display:flex;justify-content:space-between;gap:8px}.purchase__name{font-weight:600;color:var(--text);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}a.purchase__name{color:var(--primary);text-decoration:underline}.purchase.is-paid .purchase__name{text-decoration:line-through}.purchase__price{font-weight:700;white-space:nowrap}.purchase__meta{display:flex;gap:8px;margin-top:6px}.tag{font-size:12px;padding:2px 8px;border-radius:999px;background:var(--bg);border:1px solid var(--border);color:var(--muted)}.status{font-size:12px;font-weight:600}.status--paid{color:var(--paid)}.status--pending{color:var(--pending)}.empty{text-align:center;color:var(--muted);padding:24px 0}.error{color:var(--danger);font-size:14px;margin:4px 0 10px}.fab{position:fixed;right:20px;bottom:24px;width:56px;height:56px;border-radius:50%;border:none;background:var(--primary);color:#fff;font-size:28px;line-height:1;box-shadow:var(--shadow);cursor:pointer;z-index:50}.fab:hover{background:var(--primary-dark)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;padding:20px;z-index:100}.modal{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);width:100%;max-width:360px;padding:20px}.modal__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.modal__title{margin:0;font-size:17px}.modal__close{background:none;border:none;color:var(--muted);font-size:16px;padding:4px 6px;cursor:pointer;border-radius:8px}.modal__close:hover{background:var(--bg)}.import__help{color:var(--muted);font-size:13px;margin:0 0 12px}.import__summary{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:6px;font-size:14px}.import__progress{font-size:14px;margin:0 0 10px;text-align:center}.import__bar{height:8px;border-radius:999px;background:var(--bg);overflow:hidden;margin-bottom:16px}.import__bar-fill{height:100%;background:var(--primary);transition:width .2s ease}.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.login__card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:32px 24px;width:100%;max-width:360px;text-align:center}.login__title{margin:0 0 6px;font-size:26px}.login__sub{margin:0 0 20px;color:var(--muted);font-size:14px}
