:root{--tg-bg: #ffffff;--tg-secondary-bg: #eef1f4;--tg-text: #0f1419;--tg-hint: #7d8590;--tg-button: #2f9e44;--tg-button-text: #ffffff;--tg-border: rgba(15, 20, 25, .12);--radius: 14px;--green: #2f9e44;--red: #e03131;--orange: #f08c00;--green-bg: rgba(47, 158, 68, .12);--danger-bg: rgba(224, 49, 49, .12);--warn-bg: rgba(240, 140, 0, .15);--nav-height: 60px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--tg-bg);color:var(--tg-text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}#root{min-height:100dvh}.app{max-width:480px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column;background:var(--tg-bg)}.app__header{display:flex;align-items:center;gap:8px;padding:14px 16px 10px;position:sticky;top:0;background:var(--tg-bg);z-index:50}.app__logo{font-size:20px}.app__title{font-weight:700;font-size:16px;flex:1}.app__user{font-size:12px;color:var(--tg-hint);max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app__main{flex:1;padding:8px 12px calc(var(--nav-height) + 96px + env(safe-area-inset-bottom))}.screen{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px}.screen--error{max-width:480px;margin:0 auto}.screen__title{margin:0 0 8px}.muted{color:var(--tg-hint);font-size:13px}.page{display:flex;flex-direction:column;gap:12px}.page__header{display:flex;align-items:center;gap:8px}.page__title{font-size:18px;font-weight:700;flex:1;margin:0}.icon-btn{background:var(--tg-secondary-bg);border:1px solid var(--tg-border);border-radius:10px;width:36px;height:36px;font-size:15px;cursor:pointer;color:var(--tg-text);flex-shrink:0;display:inline-flex;align-items:center;justify-content:center}.icon-btn:active{opacity:.7}.card{background:var(--tg-secondary-bg);border:1px solid var(--tg-border);border-radius:var(--radius);padding:14px}.card__title{font-size:12px;font-weight:600;color:var(--tg-hint);margin-bottom:10px;text-transform:uppercase;letter-spacing:.4px}.btn{background:var(--tg-button);color:var(--tg-button-text);border:none;border-radius:10px;padding:10px 16px;font-size:14px;font-weight:600;cursor:pointer;width:100%;display:inline-flex;align-items:center;justify-content:center;gap:6px}.btn:disabled{opacity:.55}.btn--ghost{background:transparent;color:var(--tg-button);border:1px solid var(--tg-button)}.btn--danger{background:var(--red);color:#fff}.btn--small{padding:8px 12px;font-size:13px;width:auto}.btn-row{display:flex;gap:8px}.btn-row .btn{flex:1}.field{margin-bottom:12px}.field label{display:block;font-size:12px;color:var(--tg-hint);margin-bottom:5px}.input,.select,.textarea{width:100%;background:var(--tg-secondary-bg);border:1px solid var(--tg-border);border-radius:10px;padding:10px 12px;font-size:15px;color:var(--tg-text);outline:none;font-family:inherit}.input:focus,.select:focus,.textarea:focus{border-color:var(--tg-button)}.textarea{min-height:64px;resize:vertical}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--tg-hint) 50%),linear-gradient(135deg,var(--tg-hint) 50%,transparent 50%);background-position:calc(100% - 16px) 50%,calc(100% - 11px) 50%;background-size:5px 5px;background-repeat:no-repeat;padding-right:28px}.smart-row{display:flex;gap:8px}.smart-row .input{flex:1}.smart-row .btn{flex-shrink:0;font-size:16px;padding:8px 14px}.seg{display:flex;background:var(--tg-secondary-bg);border-radius:10px;padding:3px;border:1px solid var(--tg-border)}.seg button{flex:1;border:none;background:transparent;color:var(--tg-text);padding:8px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer}.seg button.active{background:var(--tg-button);color:var(--tg-button-text)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:200;display:flex;align-items:flex-end;justify-content:center}.modal{width:100%;max-width:480px;max-height:90dvh;overflow-y:auto;background:var(--tg-bg);border-radius:18px 18px 0 0;padding:16px 16px calc(16px + env(safe-area-inset-bottom));animation:slide-up .22s ease}.modal__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.modal__header h3{margin:0;font-size:17px}.modal__close{background:var(--tg-secondary-bg);border:none;border-radius:50%;width:32px;height:32px;font-size:14px;cursor:pointer;color:var(--tg-text)}.modal__footer{display:flex;gap:8px;margin-top:14px}.modal__error{color:var(--red);font-size:13px;margin:8px 0 0}@keyframes slide-up{0%{transform:translateY(40px);opacity:0}to{transform:none;opacity:1}}.toast{position:fixed;left:50%;transform:translate(-50%);bottom:calc(var(--nav-height) + 78px + env(safe-area-inset-bottom));background:var(--tg-text);color:var(--tg-bg);padding:10px 18px;border-radius:22px;font-size:14px;font-weight:500;z-index:300;box-shadow:0 6px 18px #0003;animation:toast-in .2s ease;white-space:nowrap;max-width:90vw;overflow:hidden;text-overflow:ellipsis}.toast--error{background:var(--red);color:#fff}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:480px;height:calc(var(--nav-height) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--tg-secondary-bg);border-top:1px solid var(--tg-border);display:flex;z-index:100}.bottom-nav__tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:none;border:none;color:var(--tg-hint);font-size:10px;cursor:pointer;padding:0}.bottom-nav__tab--active{color:var(--tg-button)}.bottom-nav__icon{font-size:20px;line-height:1}.fab{position:fixed;left:50%;transform:translate(-50%);bottom:calc(var(--nav-height) + 10px + env(safe-area-inset-bottom));width:54px;height:54px;border-radius:50%;border:none;background:var(--tg-button);color:var(--tg-button-text);font-size:26px;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 18px #00000047;cursor:pointer;z-index:101;line-height:1;padding:0 0 4px}.fab:active{transform:translate(-50%) scale(.94)}.loading{display:flex;flex-direction:column;align-items:center;gap:10px;padding:40px 0;color:var(--tg-hint);font-size:13px}.loading--full{min-height:100dvh;justify-content:center}.spinner{width:26px;height:26px;border:3px solid var(--tg-border);border-top-color:var(--tg-button);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-box{display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--danger-bg);border:1px solid var(--red);color:var(--red);border-radius:10px;padding:10px 12px;font-size:13px}.error-box .icon-btn{width:28px;height:28px;font-size:13px;color:var(--red);background:transparent;border:none}.month-switch{display:flex;align-items:center;justify-content:space-between;background:var(--tg-secondary-bg);border:1px solid var(--tg-border);border-radius:12px;padding:4px 6px}.month-switch__btn{background:none;border:none;font-size:18px;color:var(--tg-text);cursor:pointer;padding:2px 12px}.month-switch__label{font-weight:600;font-size:14px}.cashflow{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}.stat{background:var(--tg-secondary-bg);border:1px solid var(--tg-border);border-radius:var(--radius);padding:10px 6px;text-align:center}.stat__label{font-size:10px;color:var(--tg-hint);text-transform:uppercase;letter-spacing:.4px}.stat__value{font-size:14px;font-weight:700;margin-top:3px;white-space:nowrap}.text-green{color:var(--green)}.text-red{color:var(--red)}.chart-wrap{width:100%;height:200px}.chart-wrap--area{height:160px}.chart-wrap--bar{height:220px}.delta{font-size:10px;font-weight:700;margin-left:4px;padding:1px 5px;border-radius:999px}.delta--good{color:var(--green);background:var(--green-bg)}.delta--bad{color:var(--red);background:var(--danger-bg)}.tx-filters{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.tx-filters__month{flex:1 1 130px}.rec-card{cursor:pointer}.rec-card__top{display:flex;align-items:center;justify-content:space-between;gap:8px}.rec-card__name{font-weight:600;font-size:14px}.rec-card__meta{display:flex;flex-direction:column;gap:2px;margin-top:6px;font-size:12px;color:var(--tg-hint)}.btn--block{width:100%}.check{display:flex;align-items:center;gap:8px;font-size:13px;margin:8px 0}.budget-row{margin-bottom:10px}.budget-row__head{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:13px;margin-bottom:4px}.budget-form{max-height:45vh;overflow-y:auto}.progress__bar--over{background:var(--red)}.progress__bar--warn{background:var(--orange)}.inv-summary__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.inv-summary__value{font-size:16px;font-weight:700;margin-top:2px}.app__settings{margin-left:auto}.legend{display:flex;flex-direction:column;gap:6px;margin-top:8px}.legend__row{display:flex;align-items:center;gap:8px;font-size:13px}.legend__dot{width:10px;height:10px;border-radius:3px;flex-shrink:0}.legend__name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.legend__amount{font-weight:600}.legend__pct{color:var(--tg-hint);font-size:12px;width:44px;text-align:right}.progress{background:var(--tg-bg);border-radius:999px;height:10px;overflow:hidden;border:1px solid var(--tg-border)}.progress__bar{height:100%;background:var(--tg-button);border-radius:999px;transition:width .3s ease}.progress__label{display:flex;justify-content:space-between;font-size:12px;color:var(--tg-hint);margin-bottom:6px}.debt-mini{display:flex;flex-direction:column;gap:6px;font-size:13px}.debt-mini__row{display:flex;justify-content:space-between}.debt-mini__row span:first-child{color:var(--tg-hint)}.debt-mini__row span:last-child{font-weight:600}.year-switch{display:flex;align-items:center;gap:8px}.year-switch .select{flex:1}.table-scroll{overflow-x:auto;border:1px solid var(--tg-border);border-radius:var(--radius);background:var(--tg-secondary-bg);-webkit-overflow-scrolling:touch}.report-table{border-collapse:collapse;width:max-content;min-width:100%;font-size:12px}.report-table th,.report-table td{padding:7px 8px;border-bottom:1px solid var(--tg-border);text-align:right;white-space:nowrap}.report-table th{position:sticky;top:0;background:var(--tg-secondary-bg);z-index:2;font-weight:600;color:var(--tg-hint);font-size:11px}.report-table td:first-child,.report-table th:first-child{position:sticky;left:0;background:var(--tg-secondary-bg);z-index:1;text-align:left;font-weight:500;max-width:130px;overflow:hidden;text-overflow:ellipsis}.report-table th:first-child{z-index:3}.report-table .cell-clickable{color:var(--tg-button);font-weight:600;cursor:pointer}.report-table .cell-clickable:active{background:var(--tg-button);color:var(--tg-button-text)}.report-table tbody tr:last-child td{border-bottom:none}.report-table tfoot td{font-weight:700;border-top:1px solid var(--tg-border);background:var(--tg-secondary-bg)}.report-table tfoot tr:last-child td{border-bottom:none}.tx-list{display:flex;flex-direction:column}.tx-item{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--tg-border);font-size:13px}.tx-item:last-child{border-bottom:none}.tx-item__left{flex:1;min-width:0}.tx-item__comment{color:var(--tg-hint);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tx-item__date{color:var(--tg-hint);font-size:11px}.tx-item__amount{font-weight:700;white-space:nowrap}.inv-card{display:flex;flex-direction:column;gap:6px}.inv-card__top{display:flex;align-items:center;gap:8px}.inv-card__name{font-weight:600;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.badge{font-size:10px;font-weight:600;padding:2px 8px;border-radius:999px;background:var(--tg-button);color:var(--tg-button-text);opacity:.92;white-space:nowrap}.badge--gray{background:var(--tg-hint);color:var(--tg-bg)}.badge--red{background:var(--red);color:#fff}.badge--orange{background:var(--orange);color:#fff}.inv-card__row{display:flex;justify-content:space-between;gap:8px;font-size:13px}.inv-card__row .muted{font-size:12px}.inv-card__actions{display:flex;gap:8px;justify-content:flex-end;margin-top:2px}.section-title{font-size:14px;font-weight:700;margin:14px 0 8px;display:flex;align-items:center;gap:8px}.section-title:first-child{margin-top:0}.section-title .count{background:var(--tg-secondary-bg);border:1px solid var(--tg-border);border-radius:999px;font-size:11px;padding:1px 8px;color:var(--tg-hint);font-weight:600}.debt-card{display:flex;flex-direction:column;gap:8px}.debt-card__top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.debt-card__name{font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.debt-card__amount{font-weight:700;font-size:15px}.debt-card__meta{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--tg-hint);flex-wrap:wrap}.debt-card__desc{font-size:12px;color:var(--tg-hint)}.debt-card__actions{display:flex;gap:8px;flex-wrap:wrap}.chip{font-size:10px;font-weight:600;padding:2px 8px;border-radius:999px;background:var(--green-bg);color:var(--green);white-space:nowrap}.chip--paid{background:var(--tg-secondary-bg);color:var(--tg-hint)}.chip--overdue{background:var(--danger-bg);color:var(--red)}.day-badge{font-size:11px;padding:2px 8px;border-radius:999px;background:var(--tg-secondary-bg);color:var(--tg-text);border:1px solid var(--tg-border);white-space:nowrap}.day-badge--overdue{background:var(--danger-bg);color:var(--red);border-color:transparent}.day-badge--today{background:var(--warn-bg);color:var(--orange);border-color:transparent}.kanban{display:flex;gap:10px;overflow-x:auto;padding-bottom:8px;align-items:flex-start;-webkit-overflow-scrolling:touch}.kanban-col{min-width:248px;max-width:280px;flex-shrink:0;background:var(--tg-secondary-bg);border:1px solid var(--tg-border);border-radius:var(--radius);padding:10px;transition:border-color .15s ease,background .15s ease}.kanban-col--over{border-color:var(--tg-button)}.kanban-col__header{display:flex;align-items:center;gap:6px;margin-bottom:10px}.kanban-col__title{font-weight:700;font-size:13px;flex:1}.kanban-col__count{font-size:11px;color:var(--tg-hint);background:var(--tg-bg);border:1px solid var(--tg-border);border-radius:999px;padding:1px 7px}.kanban-col__add{background:none;border:1px dashed var(--tg-border);color:var(--tg-hint);border-radius:8px;padding:6px;font-size:12px;width:100%;cursor:pointer;margin-top:8px}.kanban-col__add:active{border-color:var(--tg-button);color:var(--tg-button)}.kanban-card{background:var(--tg-bg);border:1px solid var(--tg-border);border-radius:10px;padding:10px;margin-bottom:8px;cursor:grab;touch-action:manipulation;-webkit-user-select:none;user-select:none}.kanban-card:active{cursor:grabbing}.kanban-card__title{font-weight:600;font-size:13px;margin-bottom:4px}.kanban-card__desc{font-size:12px;color:var(--tg-hint);margin-top:4px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.kanban-card__meta{font-size:11px;color:var(--tg-hint);display:flex;flex-wrap:wrap;gap:4px 10px;margin-top:6px;align-items:center}.kanban-card__finance{display:inline-flex;align-items:center;gap:3px;color:var(--tg-button);font-weight:600}.kanban-card__finance a{color:inherit}.balance-hero{text-align:center;padding:18px 16px}.app__add{margin-left:auto;margin-right:6px;white-space:nowrap}.template-chips{display:flex;flex-wrap:wrap;gap:6px}.template-chip{display:inline-flex;align-items:stretch;border:1px solid var(--tg-border);border-radius:999px;overflow:hidden;background:var(--tg-secondary-bg)}.template-chip__main{padding:6px 10px;font-size:12px;font-weight:600;color:var(--tg-text);background:transparent;border:none;cursor:pointer}.template-chip__main:hover{background:var(--tg-bg)}.template-chip__go{padding:6px 9px;font-size:12px;border:none;border-left:1px solid var(--tg-border);background:var(--tg-button);color:#fff;cursor:pointer}.template-chip__go:disabled{opacity:.5;cursor:default}.task-budget{margin-top:8px;padding-top:8px;border-top:1px dashed var(--tg-border)}.task-budget__head{display:flex;justify-content:space-between;gap:8px;font-size:11px;font-weight:600;margin-bottom:4px}.kanban-tabs{display:flex;gap:4px;padding:4px;margin-bottom:12px;background:var(--tg-secondary-bg);border:1px solid var(--tg-border);border-radius:12px}.kanban-tab{flex:1 1 0;padding:9px 6px;font-size:13px;font-weight:600;color:var(--tg-hint);background:transparent;border:none;border-radius:9px;cursor:pointer;white-space:nowrap;transition:background .15s,color .15s}.kanban-tab:hover{color:var(--tg-text)}.kanban-tab--active{color:var(--tg-text);background:var(--tg-bg);box-shadow:0 1px 3px #00000014}.today-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.today-head__title{font-size:16px;font-weight:700}.today-head__sub{font-size:12px;color:var(--tg-hint)}.sect-title{margin:16px 0 6px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--tg-hint)}.task-list{padding:4px 0}.task-row{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border-bottom:1px solid var(--tg-border)}.task-row:last-child{border-bottom:none}.task-row--done .task-row__title{color:var(--tg-hint);text-decoration:line-through}.task-row__check{flex:0 0 auto;width:24px;height:24px;margin-top:1px;font-size:14px;font-weight:700;color:#fff;background:transparent;border:2px solid var(--tg-border);border-radius:50%;cursor:pointer;line-height:1}.task-row__check--on{background:#2f9e44;border-color:#2f9e44}.task-row__body{flex:1 1 auto;min-width:0;cursor:pointer}.task-row__title{font-size:14px;font-weight:600;line-height:1.3;word-break:break-word}.task-row__meta{display:flex;flex-wrap:wrap;gap:4px 10px;margin-top:3px;font-size:11px;color:var(--tg-hint)}.task-row__plan{flex:0 0 auto;width:30px;height:30px;font-size:15px;font-weight:700;color:var(--tg-button);background:var(--tg-secondary-bg);border:1px solid var(--tg-border);border-radius:8px;cursor:pointer}.mandala-card{margin-bottom:10px}.mandala-card__head{display:flex;align-items:center;justify-content:space-between;gap:10px;cursor:pointer}.mandala-card__title{font-size:15px;font-weight:700}.mandala-card__meta{display:flex;flex-wrap:wrap;gap:4px 10px;margin-top:3px;font-size:11px;color:var(--tg-hint)}.mandala-card__pct{font-size:18px;font-weight:800;color:var(--tg-button);white-space:nowrap}.mandala-card__pillars{margin-top:10px;border-top:1px dashed var(--tg-border);padding-top:4px}.mandala-card__toggle{margin-top:8px}.kanban-check{flex:0 0 auto;width:20px;height:20px;margin-right:6px;font-size:13px;color:var(--tg-hint);background:transparent;border:2px solid var(--tg-border);border-radius:50%;cursor:pointer;vertical-align:middle;line-height:1}.kanban-check:hover{border-color:#2f9e44;color:#2f9e44}.kanban-fire{margin-right:3px}.kanban-card--priority{border-left:3px solid #e8590c}.kanban-card__more{margin-top:6px;padding:3px 8px;font-size:11px;color:var(--tg-hint);background:transparent;border:1px dashed var(--tg-border);border-radius:7px;cursor:pointer}.kanban-card__details{margin-top:6px}.checkbox-row{display:flex;align-items:center;gap:8px;font-size:14px;cursor:pointer}.kanban-coltabs{display:none;gap:6px;margin-bottom:10px;overflow-x:auto}.kanban-coltab{padding:7px 12px;font-size:12px;font-weight:600;color:var(--tg-hint);background:var(--tg-secondary-bg);border:1px solid var(--tg-border);border-radius:999px;cursor:pointer;white-space:nowrap}.kanban-coltab--active{color:#fff;background:var(--tg-button);border-color:var(--tg-button)}@media (max-width: 720px){.kanban-coltabs{display:flex}.kanban{display:block}.kanban-col{display:none;width:100%;min-width:0}.kanban-col--active{display:block}}.mv-chart{margin:6px 0}.mv-rows{display:flex;flex-direction:column;gap:6px;margin:8px 0}.mv-row{display:flex;align-items:center;gap:8px;font-size:12px}.mv-row>span:first-child{width:90px;flex:0 0 auto;color:var(--tg-text)}.mv-row>span:last-child{width:36px;flex:0 0 auto;text-align:right;font-weight:700}.mv-row__bar{flex:1 1 auto;height:8px;border-radius:4px;background:var(--tg-border);overflow:hidden}.mv-row__bar span{display:block;height:100%;background:var(--tg-button);border-radius:4px}.mv-stats{display:flex;gap:12px;margin-top:10px;padding-top:10px;border-top:1px dashed var(--tg-border)}.mv-stat{flex:1 1 50%;font-size:13px;font-weight:700}.mv-suggest{margin-top:10px;padding:10px;background:var(--tg-secondary-bg);border:1px solid var(--tg-border);border-radius:10px}.mv-dev{display:flex;justify-content:space-between;gap:8px;font-size:12px;padding:3px 0}.checklist-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.checklist-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 0;border-bottom:1px dashed var(--tg-border)}.checklist-item:last-of-type{border-bottom:none}.checklist-item__done{color:var(--tg-hint);text-decoration:line-through}.ring-wrap{display:flex;align-items:center;justify-content:center;gap:16px;padding:8px 0}.ring{position:relative;width:76px;height:76px;flex:0 0 auto}.ring svg{transform:rotate(-90deg)}.ring__bg{fill:none;stroke:var(--tg-border);stroke-width:8}.ring__fill{fill:none;stroke:var(--tg-button);stroke-width:8;stroke-linecap:round;transition:stroke-dashoffset .5s ease}.ring__label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:16px;font-weight:800;line-height:1}.ring__label small{font-size:10px;font-weight:600;color:var(--tg-hint)}.cal-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.cal-nav{display:flex;align-items:center;gap:8px}.cal-title{font-size:14px;font-weight:700;min-width:90px;text-align:center;text-transform:capitalize}.cal-legend{display:flex;gap:14px;font-size:11px;margin-bottom:8px}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.cal-day{min-height:40px;padding:4px;border:1px solid var(--tg-border);border-radius:8px;background:var(--tg-secondary-bg);cursor:default}.cal-day--empty{background:transparent;border-color:transparent}.cal-day--today{border-color:var(--tg-button);background:var(--tg-bg)}.cal-day__num{font-size:12px;font-weight:700}.cal-day__dots{display:flex;flex-wrap:wrap;gap:2px;margin-top:2px}.cal-dot{width:6px;height:6px;border-radius:50%;background:var(--tg-hint);display:inline-block}.cal-dot--hot{background:#e8590c}.cal-week{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.cal-week-day{padding:4px;border:1px solid var(--tg-border);border-radius:8px;background:var(--tg-secondary-bg);min-height:70px}.cal-week-day__name{font-size:10px;color:var(--tg-hint);text-align:center}.cal-week-day__num{font-size:13px;font-weight:800;text-align:center}.cal-week-day__num--today{color:var(--tg-button)}.cal-chip{font-size:10px;margin-top:3px;padding:2px 4px;background:var(--tg-bg);border-radius:5px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bento{display:grid;grid-template-columns:1fr 1fr;gap:10px}.bento__tile{padding:12px;border:1px solid var(--tg-border);border-radius:14px;background:var(--tg-secondary-bg);min-height:72px}.bento__tile--wide{grid-column:span 2}.bento__label{font-size:12px;font-weight:700;color:var(--tg-hint);margin-bottom:4px}.bento__big{font-size:24px;font-weight:800}.bento__num{font-size:20px;font-weight:800}.bento__money{font-size:18px;font-weight:800}.bento__bar{height:6px;margin-top:6px;border-radius:3px;background:var(--tg-border);overflow:hidden}.bento__bar span{display:block;height:100%;background:var(--tg-button)}.kanban-card--selected{outline:2px solid var(--tg-button);background:var(--tg-secondary-bg)}.pick-box{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-right:6px;font-size:11px;font-weight:700;color:#fff;border:1.5px solid var(--tg-hint);border-radius:4px;vertical-align:middle}.pick-box--on{background:var(--tg-button);border-color:var(--tg-button)}.bulk-bar{position:fixed;left:8px;right:8px;bottom:68px;z-index:40;display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--tg-bg);border:1px solid var(--tg-border);border-radius:14px;box-shadow:0 6px 24px #0000002e;flex-wrap:wrap}.bulk-bar__count{font-size:12px;font-weight:700;white-space:nowrap}.bulk-bar__buttons{display:flex;flex-wrap:wrap;gap:6px;flex:1 1 auto}.balance-hero__label{font-size:13px;color:var(--tg-hint);font-weight:600}.balance-hero__value{font-size:34px;font-weight:800;line-height:1.15;margin:6px 0 4px;letter-spacing:-.5px}.balance-hero__hint{font-size:12px;color:var(--tg-hint)}.kanban-card__actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.kanban-card__btn{flex:1 1 auto;min-width:0;padding:5px 8px;font-size:11px;font-weight:600;color:var(--tg-hint);background:var(--tg-secondary-bg);border:1px solid var(--tg-border);border-radius:8px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background .15s,color .15s}.kanban-card__btn:hover{background:var(--tg-bg);color:var(--tg-text)}.kanban-card__btn--next{color:#fff;background:var(--tg-button);border-color:var(--tg-button)}.kanban-card__btn--next:hover{opacity:.9;color:#fff;background:var(--tg-button)}.kanban-filters{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 10px}.filter-chip{padding:6px 12px;font-size:12px;font-weight:600;color:var(--tg-hint);background:var(--tg-secondary-bg);border:1px solid var(--tg-border);border-radius:999px;cursor:pointer;transition:background .15s,color .15s,border-color .15s}.filter-chip:hover{color:var(--tg-text)}.filter-chip--active{color:#fff;background:var(--tg-button);border-color:var(--tg-button)}.kanban-empty{font-size:12px;color:var(--tg-hint);text-align:center;padding:14px 0;border:1px dashed var(--tg-border);border-radius:10px;margin-bottom:8px}.suggestion{background:var(--green-bg);border:1px solid var(--green);color:var(--green);border-radius:10px;padding:8px 10px;font-size:13px;margin-top:8px}.suggestion__conf{opacity:.75}.empty{text-align:center;color:var(--tg-hint);font-size:13px;padding:24px 0}.project-bar{display:flex;align-items:center;gap:8px;margin-bottom:12px}.project-bar__select{flex:1;min-width:0}.project-progress{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.project-chip{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--tg-border);border-radius:var(--radius);cursor:pointer;font-size:13px}.project-chip--active{border-color:var(--tg-button);background:var(--green-bg)}.project-chip__name{font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.project-chip__count{color:var(--tg-hint);font-size:12px;white-space:nowrap}.project-chip__bar{flex:0 0 60px;height:6px;border-radius:999px;background:var(--tg-secondary-bg);overflow:hidden}.project-chip__fill{display:block;height:100%;border-radius:999px;transition:width .3s ease}.project-tag{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--tg-hint);white-space:nowrap}.parent-tag{font-size:11px;color:var(--tg-hint);white-space:nowrap}.project-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}.badge--month{background:var(--warn-bg);color:var(--orange)}.badge--day{background:var(--green-bg);color:var(--green)}.badge--green{background:var(--green);color:#fff}.color-picker{display:flex;flex-wrap:wrap;gap:8px}.color-swatch{width:28px;height:28px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0}.color-swatch--active{border-color:var(--tg-text);transform:scale(1.15)}.plan-card{margin-bottom:16px}.plan-toolbar{display:flex;align-items:center;gap:8px;margin:8px 0 12px}.plan-month-input{flex:1;min-width:0}.plan-progress{margin:4px 0 14px}.plan-progress__bar{height:8px;border-radius:999px;background:var(--tg-secondary-bg);overflow:hidden;margin-bottom:4px}.plan-progress__fill{height:100%;border-radius:999px;background:var(--tg-button);transition:width .3s ease}.plan-line{padding:10px 0;border-top:1px solid var(--tg-border)}.plan-line__head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.plan-line__label{font-weight:600;font-size:14px}.plan-line__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;font-size:12px;color:var(--tg-hint)}.plan-line__percent{margin-top:6px;font-size:12px;font-weight:600}.text-orange{color:var(--orange)}.row--plan td{color:var(--tg-hint);font-style:italic}.row--plan td:first-child{font-weight:500}.row--group td{font-weight:700;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--tg-hint);background:var(--tg-secondary-bg);padding-top:6px;padding-bottom:6px}
