:root{
 --bg:var(--tg-theme-bg-color,#fff); --fg:var(--tg-theme-text-color,#1c1c1e);
 --hint:var(--tg-theme-hint-color,#8e8e93); --sec:var(--tg-theme-secondary-bg-color,#f1f1f4);
 --link:var(--tg-theme-link-color,#2481cc); --btn:var(--tg-theme-button-color,#2481cc);
 --btntext:var(--tg-theme-button-text-color,#fff); --card:var(--tg-theme-bg-color,#fff);
 --green:#34c759; --red:#ff3b30; --line:rgba(128,128,128,.18);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body{font-family:-apple-system,system-ui,Roboto,sans-serif;margin:0;background:var(--sec);
 color:var(--fg);padding:0 0 76px}
.head{position:sticky;top:0;z-index:10;background:var(--bg);padding:10px 14px 8px;
 border-bottom:1px solid var(--line)}
.period{display:flex;gap:8px;align-items:center}
select{font:inherit;color:var(--fg);background:var(--sec);border:none;border-radius:9px;
 padding:7px 10px;flex:1;-webkit-appearance:none;appearance:none}
.tabs{display:flex;gap:6px;margin-top:9px}
.tab{flex:1;text-align:center;padding:8px 4px;border-radius:12px;background:var(--sec);
 font-size:13px;font-weight:600;color:var(--hint);white-space:nowrap;overflow:hidden;
 cursor:default;user-select:none;-webkit-user-select:none}
.tab.on{background:var(--btn);color:var(--btntext)}
.wrap{padding:12px 14px}
.card{background:var(--card);border-radius:18px;padding:14px;margin-bottom:12px;
 box-shadow:0 2px 12px rgba(0,0,0,.07)}
.bal{display:flex;justify-content:space-around;text-align:center}
.bal div small{display:block;color:var(--hint);font-size:12px;margin-bottom:3px}
.bal div b{font-size:17px}
.muted{color:var(--hint);font-size:13px}
[data-info]{cursor:help}
[data-info] small,[data-info] .l{border-bottom:1px dotted var(--hint)}   /* намёк: есть описание (long-press) */
#helpBtn{flex:0 0 auto;width:32px;height:32px;border-radius:50%;border:1px solid var(--line);
 background:var(--sec);color:var(--fg);font-weight:700;font-size:15px;cursor:pointer}
.row{display:flex;justify-content:space-between;align-items:center;padding:9px 0;
 border-bottom:1px solid var(--line);gap:10px}
.row:last-child{border-bottom:none}
.row .l{min-width:0}.row .l b{font-size:15px;display:block;white-space:nowrap;
 overflow:hidden;text-overflow:ellipsis}
.row .l small{color:var(--hint);font-size:12px}
.amt{font-weight:700;white-space:nowrap}.amt.exp{color:var(--red)}.amt.inc{color:var(--green)}
.bar{height:7px;border-radius:4px;background:var(--btn);margin-top:5px;min-width:2px}
.barbg{height:7px;border-radius:4px;background:var(--line);margin-top:5px}
.linkbtn{padding:7px 0 0;border:0;background:transparent;color:var(--btn);font:inherit;
 font-size:13px;font-weight:600;cursor:pointer}
.h{font-size:13px;font-weight:700;color:var(--hint);text-transform:uppercase;
 letter-spacing:.04em;margin:4px 2px 8px}
.txrow{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}
.txrow .ic{width:38px;height:38px;border-radius:10px;background:var(--sec);display:flex;
 align-items:center;justify-content:center;font-size:18px;flex-shrink:0}
.txrow .m{flex:1;min-width:0}.txrow .m b{font-size:15px;display:block;white-space:nowrap;
 overflow:hidden;text-overflow:ellipsis}.txrow .m small{color:var(--hint);font-size:12px}
.txrow.selrow{background:rgba(36,129,204,.14);border-radius:8px}
#txCard.selecting{touch-action:none;user-select:none}
#txCard.selecting .txrow{cursor:pointer}
.selbar{position:fixed;left:0;right:0;bottom:0;z-index:25;display:flex;align-items:center;gap:10px;
 padding:10px 16px;background:var(--bg);border-top:1px solid var(--line);box-shadow:0 -2px 12px rgba(0,0,0,.18)}
.selbar .selcount{flex:1;text-align:center;font-weight:600;color:var(--fg)}
.achgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.ach{text-align:center;padding:8px 4px;border-radius:10px;background:var(--sec)}
.ach.locked{opacity:.38}
.achemo{font-size:24px;line-height:1.25}
.achttl{font-size:11px;color:var(--fg);margin-top:2px;line-height:1.15}
.streakpill{display:inline-block;margin:0 0 10px;padding:7px 14px;border-radius:16px;
 background:linear-gradient(90deg,#ff9500,#ff3b30);color:#fff;font-weight:700;font-size:14px}
.chips{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;margin-bottom:6px;
 -ms-overflow-style:none;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}
/* Категорий бывает много — переносим на новые строки, чтобы все были видны (скролл вбок на
   десктопе недоступен: полоса скрыта, колесо не крутит горизонтально).
   #moreSec — то же самое: 7 подблоков «Ещё» в одну строку не влезают, и последние
   («Подписка», «Настройки») оказывались недостижимы. */
#catChips,#moreSec{flex-wrap:wrap;overflow-x:visible}
.chip{flex-shrink:0;padding:6px 12px;border-radius:16px;background:var(--sec);font-size:13px;
 font-weight:600;color:var(--hint)}.chip.on{background:var(--btn);color:var(--btntext)}
.fab{position:fixed;right:18px;bottom:18px;width:56px;height:56px;border-radius:50%;
 background:var(--btn);color:var(--btntext);font-size:30px;line-height:56px;text-align:center;
 box-shadow:0 4px 14px rgba(0,0,0,.25);z-index:20}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:30;display:none;
 align-items:flex-end}
.modal.on{display:flex}
.sheet{background:var(--bg);width:100%;border-radius:18px 18px 0 0;padding:6px 16px 26px;
 max-height:92vh;overflow:auto;position:relative}
.sheet h3{margin:0 0 14px}
.grabzone{padding:6px 0 12px;cursor:grab;touch-action:none}
.grabpill{width:40px;height:5px;border-radius:3px;background:var(--line);margin:0 auto}
.sheetX{position:absolute;top:8px;right:12px;background:none;border:none;color:var(--hint);
 font-size:22px;line-height:1;padding:4px 6px;z-index:2;cursor:pointer}
.fld{margin-bottom:12px}.fld label{display:block;font-size:13px;color:var(--hint);margin-bottom:5px}
.fld input,.fld select{width:100%;padding:11px;border-radius:10px;border:1px solid var(--line);
 background:var(--bg);color:var(--fg);font:inherit}
.seg{display:flex;gap:8px;margin-bottom:12px}
.seg button{flex:1;padding:10px;border-radius:10px;border:1px solid var(--line);background:var(--bg);
 color:var(--fg);font:inherit;font-weight:600}
.seg button.on{background:var(--btn);color:var(--btntext);border-color:var(--btn)}
.btn{width:100%;padding:13px;border-radius:14px;border:none;background:var(--btn);
 color:var(--btntext);font:inherit;font-weight:700;font-size:16px}
.btn.ghost{background:var(--sec);color:var(--fg)}
.btn.danger{background:transparent;color:var(--red)}
.acts{display:flex;gap:8px;margin-top:8px}
.imp-tools{margin-top:12px}.imp-tool-buttons{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0 12px}
.imp-tool-buttons .btn{flex:1 1 130px}.imp-tool-line{display:grid;grid-template-columns:1fr auto;gap:6px}
.imp-tool-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.imp-tool-grid .btn{grid-column:1/-1}
.imp-warnings{display:flex;gap:5px;flex-wrap:wrap;margin-top:5px}.imp-warnings span{font-size:12px;
 color:var(--orange);background:var(--sec);padding:3px 7px;border-radius:10px}
.empty{text-align:center;color:var(--hint);padding:40px 0}
.dev{display:flex;gap:8px;align-items:center}
.iconbtn{background:none;border:none;color:var(--hint);font-size:18px;padding:6px}
.skel{height:54px;border-radius:14px;margin-bottom:12px;
 background:linear-gradient(90deg,var(--sec) 25%,var(--line) 37%,var(--sec) 63%);
 background-size:400% 100%;animation:sh 1.2s ease infinite}
@keyframes sh{0%{background-position:100% 0}100%{background-position:-100% 0}}
.menu button{display:block;width:100%;text-align:left;padding:14px;border:none;
 background:var(--bg);color:var(--fg);font:inherit;font-size:16px;border-bottom:1px solid var(--line)}
.menu button:last-child{border-bottom:none}
.menu button.danger{color:var(--red)}
.frq{display:flex;gap:6px;overflow-x:auto;padding-bottom:6px;margin-bottom:10px;
 -ms-overflow-style:none;scrollbar-width:none}.frq::-webkit-scrollbar{display:none}
.frq .chip{cursor:pointer}
.tap{cursor:pointer}
.hint{color:var(--hint);font-size:12px;margin:-4px 2px 8px}
.tab,.chip,.btn,.iconbtn,.seg button,.fab,.frq .chip,.menu button{transition:transform .07s ease}
.tab:active,.chip:active,.btn:active,.iconbtn:active,.seg button:active,.fab:active,
.menu button:active,.row.tap:active{transform:scale(.95)}
.donut{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.lgds{flex:1;min-width:130px}
.lgd{font-size:13px;padding:2px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px;vertical-align:middle}
::-webkit-scrollbar{width:7px;height:7px}
::-webkit-scrollbar-thumb{background:transparent;border-radius:4px;transition:background .35s}
.scrolling::-webkit-scrollbar-thumb{background:var(--line)}
html{scrollbar-width:thin;scrollbar-color:transparent transparent}
html.scrolling{scrollbar-color:var(--line) transparent}
.robanner{display:none;background:#ff9500;color:#fff;padding:8px 14px;font-size:13px;
 text-align:center;line-height:1.35}.robanner.on{display:block}
