:root{
  --bg:#08060f;--card:rgba(255,255,255,.045);--card2:rgba(255,255,255,.075);--line:rgba(255,255,255,.09);
  --text:#f3effc;--dim:#a89ec6;--dim2:#6f6489;--ok:#5ff2b4;--warn:#ffca6a;--bad:#ff7f9f;
  --cyan:#79f4ff;--violet:#c78bff;--pink:#ff49b0;
  --grad:linear-gradient(135deg,#79f4ff,#c78bff 48%,#ff49b0);
  --safe-b:env(safe-area-inset-bottom,0px);--safe-t:env(safe-area-inset-top,0px);--nav-h:62px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
[hidden]{display:none!important}
html,body{margin:0;height:100%}
body{background:radial-gradient(900px 600px at 10% -10%,rgba(90,60,220,.20),transparent 70%),
  radial-gradient(700px 500px at 100% 0%,rgba(255,73,176,.10),transparent 65%),var(--bg);
  color:var(--text);font:400 16px/1.4 -apple-system,BlinkMacSystemFont,"SF Pro Text",sans-serif;
  -webkit-font-smoothing:antialiased;overscroll-behavior-y:none}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;text-align:left}
input,select{font:inherit;color:var(--text);background:none;border:0;outline:none;width:100%}
svg{display:block}
.app{min-height:100%;padding:calc(var(--safe-t) + 10px) 0 calc(var(--nav-h) + var(--safe-b) + 96px);max-width:640px;margin:0 auto}

/* шапка */
header{padding:0 16px 6px}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:10px}
.brand{font-size:15px;letter-spacing:.06em;color:var(--dim)}
.brand #tabTitle{color:var(--text)}
.dot-sep{margin:0 6px;color:var(--dim2)}
.icon-btn{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:var(--card);border:1px solid var(--line);color:var(--dim)}
.sumline{display:flex;gap:8px;overflow-x:auto;padding:12px 0 4px;scrollbar-width:none}
.sumline::-webkit-scrollbar{display:none}
.stat-pill{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:8px 12px;white-space:nowrap}
.stat-pill .k{font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--dim2)}
.stat-pill .v{font-size:17px;font-variant-numeric:tabular-nums;margin-top:2px}
.stat-pill .v small{font-size:11px;color:var(--dim)}

main{padding:10px 14px 0}
.page-title{font-size:24px;font-weight:300;margin:6px 2px 14px}

/* карточки */
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px;margin-bottom:12px}
.card:active{background:var(--card2)}
.card-h{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:10px}
.card-t{font-size:16px;font-weight:500}
.card-s{font-size:12.5px;color:var(--dim2);margin-top:3px}
.badge{font-size:10.5px;padding:3px 8px;border-radius:999px;white-space:nowrap;letter-spacing:.02em}
.badge.ok{background:rgba(95,242,180,.14);color:var(--ok)}
.badge.wait{background:rgba(255,202,106,.14);color:var(--warn)}
.badge.min{background:rgba(255,127,159,.14);color:var(--bad)}
.card-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px;margin-top:4px}
.kv .k{font-size:11px;color:var(--dim2);letter-spacing:.03em}
.kv .v{font-size:15px;font-variant-numeric:tabular-nums;margin-top:2px}
.kv .v.minus{color:var(--warn)}
.kv .v.plus{color:var(--ok)}
.empty{text-align:center;color:var(--dim2);padding:60px 22px;font-size:15px;line-height:1.6}
.empty b{display:block;color:var(--dim);font-weight:500;margin-bottom:8px;font-size:16px}

/* строки */
.list{background:var(--card);border-radius:16px;border:1px solid var(--line);overflow:hidden}
.row{display:flex;align-items:center;gap:12px;padding:14px;border-top:1px solid var(--line)}
.row:first-child{border-top:0}
.row:active{background:var(--card2)}
.row .mid{flex:1;min-width:0}
.row .t{font-size:15px}
.row .s{font-size:12.5px;color:var(--dim2);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row .r{font-size:15px;font-variant-numeric:tabular-nums;white-space:nowrap}

/* формы */
.fld{display:block;margin-bottom:12px}
.fld span{display:block;font-size:11.5px;color:var(--dim2);margin:0 0 5px 3px;letter-spacing:.03em}
.fld input,.fld select{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:13px;font-size:16px}
.fld select{appearance:none}
.fld input:focus,.fld select:focus{border-color:rgba(199,139,255,.55);background:rgba(168,85,247,.08)}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.calc{background:rgba(0,0,0,.25);border:1px solid var(--line);border-radius:13px;padding:12px;margin-bottom:12px;font-size:13.5px;line-height:1.6;color:var(--dim)}
.calc b{color:var(--text);font-variant-numeric:tabular-nums}
.calc .line{display:flex;justify-content:space-between;gap:10px}
.calc .line.total{border-top:1px solid var(--line);margin-top:6px;padding-top:6px;color:var(--text)}

/* кнопки */
.btn-grad{display:block;width:100%;padding:15px;border-radius:14px;background:var(--grad);color:#0a0614;font-weight:600;font-size:16px;text-align:center}
.btn-grad:active{filter:brightness(.94)}
.btn-soft{display:block;padding:14px 16px;border-radius:14px;background:var(--card);border:1px solid var(--line);color:var(--dim);font-size:15px;text-align:center}
.btn-soft.danger{color:var(--bad)}
.wide{width:100%}
.grow{flex:1}
.menu-row{display:block;width:100%;padding:15px 4px;border-bottom:1px solid var(--line);font-size:15.5px;color:var(--text)}
.menu-row:last-of-type{border-bottom:0}

/* нижняя навигация */
.bottomnav{position:fixed;left:0;right:0;bottom:0;z-index:60;display:flex;height:calc(var(--nav-h) + var(--safe-b));
  padding-bottom:var(--safe-b);background:rgba(11,8,20,.93);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
  border-top:1px solid var(--line)}
.navitem{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--dim2);font-size:10.5px}
.navitem.active{color:var(--text)}
.navitem.active svg{filter:drop-shadow(0 0 8px rgba(199,139,255,.6))}

/* fab */
#fab{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(var(--nav-h) + var(--safe-b) + 14px);z-index:55;
  display:flex;align-items:center;gap:7px;padding:13px 20px;border-radius:999px;background:var(--grad);color:#0a0614;
  font-weight:600;font-size:15px;white-space:nowrap;box-shadow:0 10px 30px rgba(168,85,247,.45)}
#fab:active{transform:translateX(-50%) scale(.96)}

/* шторки */
.sheet-wrap{position:fixed;inset:0;z-index:80;display:none}
.sheet-wrap.open{display:block}
.sheet-wrap::before{content:"";position:absolute;inset:0;background:rgba(4,2,10,.64);backdrop-filter:blur(6px)}
.sheet{position:absolute;left:0;right:0;bottom:0;max-height:92%;overflow-y:auto;background:linear-gradient(180deg,#150c26,#0b0716);
  border-radius:22px 22px 0 0;border-top:1px solid rgba(255,255,255,.1);padding:10px 16px calc(16px + var(--safe-b));
  max-width:640px;margin:0 auto;animation:up .24s cubic-bezier(.22,1,.36,1)}
@keyframes up{from{transform:translateY(30px);opacity:.4}to{transform:none;opacity:1}}
.grab{width:38px;height:4px;border-radius:4px;background:rgba(255,255,255,.18);margin:0 auto 12px}
.sheet-h{font-size:16px;font-weight:500;text-align:center;margin:2px 0 14px}
.sheet-actions{display:flex;gap:8px;margin-top:6px}

/* настройки */
.set-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 2px 14px;border-bottom:1px solid var(--line);margin-bottom:8px}
.a-title{font-size:15px}
.a-sub{font-size:12px;color:var(--dim2);margin-top:2px}
.seg{display:flex;background:var(--card);border:1px solid var(--line);border-radius:11px;padding:3px;gap:3px}
.seg button{font-size:11.5px;padding:7px 9px;border-radius:8px;color:var(--dim);text-align:center}
.seg button.on{background:var(--card2);color:var(--text)}
.seg button{flex:1;white-space:nowrap}
.wide-seg{width:100%;margin:-4px 0 12px;background:var(--card)}
.week-seg{display:flex;gap:4px;background:none;border:0;padding:0}
.week-seg button{flex:1;padding:11px 0;border-radius:10px;background:var(--card);border:1px solid var(--line);color:var(--dim);font-size:13px;text-align:center}
.week-seg button.on{background:rgba(168,85,247,.20);border-color:rgba(199,139,255,.55);color:var(--text)}

/* навигация по неделям */
.monthbar{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:2px 0 12px}
.mb-btn{width:44px;height:44px;border-radius:13px;display:grid;place-items:center;background:var(--card);border:1px solid var(--line);color:var(--dim);flex:0 0 auto}
.mb-btn:active{background:var(--card2)}
.month{flex:1;text-align:center;font-size:14px;letter-spacing:.03em;color:var(--text)}

/* календарь */
.evlist{display:flex;flex-direction:column;gap:6px}
.ev{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;border-radius:11px;background:rgba(0,0,0,.22);font-size:14px}
.ev.in{border-left:2px solid var(--ok)}
.ev.out{border-left:2px solid var(--pink)}
.ev-t{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ev-w{display:block;font-size:11px;color:var(--dim2);margin-top:1px}
.ev-a{font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--dim)}
.ev.in .ev-a{color:var(--ok)}
.ev.out .ev-a{color:var(--pink)}
.ev.wait{border-left:2px solid var(--warn);opacity:.9}
.ev.wait .ev-a{color:var(--warn)}

/* накопление до минималки */
.carry{font-size:12.5px;line-height:1.45;color:var(--dim);background:rgba(255,255,255,.04);
  border:1px dashed rgba(255,255,255,.12);border-radius:11px;padding:9px 11px;margin-top:10px}
.carry.ready{color:var(--ok);border-color:rgba(95,242,180,.35);background:rgba(95,242,180,.08)}
.carry.warn{color:var(--warn);border-color:rgba(255,202,106,.3);background:rgba(255,202,106,.07)}
.carry b{color:inherit}

/* баннер «день выплаты» */
.banner{background:linear-gradient(135deg,rgba(121,244,255,.10),rgba(255,73,176,.10));
  border:1px solid rgba(199,139,255,.35);border-radius:16px;padding:14px;margin-bottom:12px}
.banner .b-h{font-size:15px;font-weight:500}
.banner .b-s{font-size:12.5px;color:var(--dim);margin-top:4px;line-height:1.45}

/* подтверждение вывода */
.cfrow{background:rgba(0,0,0,.22);border:1px solid var(--line);border-radius:14px;padding:12px;margin-bottom:10px}
.cf-h{display:flex;justify-content:space-between;gap:10px;font-size:14.5px}
.cf-w{color:var(--dim2);font-size:12px}
.cf-sub{font-size:12px;color:var(--dim2);margin-top:3px;line-height:1.4}
.cf-diff{font-size:12px;margin-top:6px}
.cf-diff.same{color:var(--ok)}
.cf-diff.diff{color:var(--warn)}
.hintline{font-size:11.5px;color:var(--dim2);margin:-6px 3px 14px;line-height:1.45}

/* баланс «мои деньги» */
.balance{margin-top:12px;padding:12px;border-radius:13px;border:1px solid var(--line);background:rgba(0,0,0,.22)}
.balance .b-k{font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:var(--dim2)}
.balance .b-v{font-size:24px;font-variant-numeric:tabular-nums;margin-top:3px}
.balance .b-s{font-size:11.5px;color:var(--dim2);margin-top:4px;line-height:1.4}
.balance.neg{border-color:rgba(255,127,159,.35);background:rgba(255,127,159,.07)}
.balance.neg .b-v{color:var(--bad)}
.balance.pos{border-color:rgba(95,242,180,.3);background:rgba(95,242,180,.06)}
.balance.pos .b-v{color:var(--ok)}

/* вход */
.auth{position:fixed;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;padding:20px;
  background:radial-gradient(700px 500px at 20% 0%,rgba(120,60,220,.3),transparent 70%),rgba(5,3,12,.97);overflow-y:auto}
.auth-box{width:100%;max-width:360px;padding:6px 0 20px}
.auth-logo{width:62px;height:62px;border-radius:18px;display:grid;place-items:center;margin:0 auto 16px;font-size:30px;font-weight:300;
  color:#0a0614;background:var(--grad);box-shadow:0 10px 34px rgba(168,85,247,.45)}
.auth-title{text-align:center;font-size:19px;letter-spacing:.04em;margin-bottom:4px}
.auth-sub{text-align:center;font-size:13px;color:var(--dim2);margin-bottom:18px}
.auth-tabs{display:flex;gap:6px;background:var(--card);border-radius:14px;padding:4px;margin-bottom:16px}
.atab{flex:1;padding:9px 0;border-radius:10px;font-size:14px;color:var(--dim);text-align:center}
.atab.active{background:var(--card2);color:var(--text)}
.auth-err{min-height:18px;font-size:13px;color:var(--bad);text-align:center;margin:8px 0}

/* уведомление */
.toast{position:fixed;left:50%;bottom:calc(var(--nav-h) + var(--safe-b) + 80px);transform:translateX(-50%) translateY(10px);
  background:#1c1130;border:1px solid rgba(255,255,255,.12);padding:10px 16px;border-radius:12px;font-size:14px;
  opacity:0;pointer-events:none;transition:.2s;z-index:90;max-width:86vw;text-align:center}
.toast.show{opacity:1;transform:translateX(-50%)}
