:root{--bg:#f3f4f6;--card:#fff;--text:#111827;--muted:#6b7280;--line:#e5e7eb;--blue:#2563eb;--green:#16a34a;--red:#dc2626;--orange:#ea580c;--radius:18px}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;background:var(--bg);color:var(--text)}a{color:inherit;text-decoration:none}.wrap{max-width:1180px;margin:0 auto;padding:18px}.topbar{display:flex;gap:12px;align-items:center;justify-content:space-between;margin-bottom:16px}.brand{font-size:22px;font-weight:800}.userbox{display:flex;gap:10px;align-items:center;color:var(--muted)}.btn{border:0;border-radius:14px;padding:11px 15px;background:var(--blue);color:#fff;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:8px}.btn.gray{background:#374151}.btn.red{background:var(--red)}.btn.green{background:var(--green)}.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:14px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:0 8px 22px rgba(15,23,42,.06)}.span-3{grid-column:span 3}.span-4{grid-column:span 4}.span-6{grid-column:span 6}.span-8{grid-column:span 8}.span-12{grid-column:span 12}.kpi-title{color:var(--muted);font-size:13px}.kpi-value{font-size:26px;font-weight:900;margin-top:5px}.positive{color:var(--green)}.negative{color:var(--red)}.muted{color:var(--muted)}.row{display:flex;gap:10px;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:10px 0}.row:last-child{border-bottom:0}.form{display:grid;gap:10px}.input,select,textarea{width:100%;border:1px solid var(--line);border-radius:13px;padding:11px 12px;font:inherit;background:#fff}label{font-size:13px;color:var(--muted);font-weight:700}.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}.login-page{min-height:100vh;display:grid;place-items:center;padding:20px}.login-card{width:min(420px,100%);background:white;border-radius:24px;padding:24px;box-shadow:0 20px 50px rgba(15,23,42,.14)}.pin{font-size:32px;text-align:center;letter-spacing:8px;font-weight:900}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 14px}.tab{padding:9px 13px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--muted);font-weight:700}.tab.active{background:var(--blue);color:#fff;border-color:var(--blue)}.mobile-actions{position:fixed;right:18px;bottom:18px;display:flex;flex-direction:column;gap:10px;z-index:20}.fab{width:58px;height:58px;border-radius:50%;box-shadow:0 12px 30px rgba(15,23,42,.25);justify-content:center;font-size:24px}table{width:100%;border-collapse:collapse}th,td{padding:10px;border-bottom:1px solid var(--line);text-align:left}th{font-size:12px;color:var(--muted);text-transform:uppercase}@media(max-width:800px){.wrap{padding:12px}.grid{display:block}.card{margin-bottom:12px}.two{grid-template-columns:1fr}.topbar{align-items:flex-start}.brand{font-size:19px}.kpi-value{font-size:22px}table{font-size:13px}.hide-mobile{display:none}}

/* PIN keyboard */
.login-card-pin{max-width:420px;width:100%}
.pin-keyboard{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:10px 0 12px}
.pin-key{height:58px;border:1px solid #dbe3ef;border-radius:18px;background:#fff;font-size:24px;font-weight:800;color:#0f172a;box-shadow:0 8px 18px rgba(15,23,42,.06);cursor:pointer;touch-action:manipulation}
.pin-key:active{transform:scale(.97);background:#eff6ff}
.pin-key-muted{color:#64748b;background:#f8fafc}
.input.pin{text-align:center;font-size:28px;font-weight:800;letter-spacing:10px;caret-color:transparent}
@media(max-width:520px){
  .login-page{align-items:flex-start;padding-top:18px}
  .login-card{border-radius:24px;padding:22px 18px}
  .pin-key{height:56px;border-radius:16px;font-size:23px}
}
.alert{border-color:#fed7aa;background:#fff7ed;color:#9a3412;margin-bottom:14px}.alert code{background:#ffedd5;padding:2px 6px;border-radius:8px}.forecast{display:flex;align-items:center;justify-content:space-between;gap:18px}.forecast.good{border-color:#bbf7d0;background:#f0fdf4}.forecast.warn{border-color:#fde68a;background:#fffbeb}.forecast.bad{border-color:#fecaca;background:#fef2f2}.forecast-text{font-size:22px;font-weight:900}.forecast-grid{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:10px;min-width:55%}.forecast-grid div,.debt-summary div{background:rgba(255,255,255,.72);border:1px solid var(--line);border-radius:14px;padding:12px}.forecast-grid span{display:block;color:var(--muted);font-size:12px;font-weight:700}.forecast-grid b{font-size:18px}.debt-summary{margin-bottom:10px}.debt-summary b{font-size:22px}@media(max-width:900px){.forecast{display:block}.forecast-grid{grid-template-columns:1fr 1fr;min-width:0;margin-top:12px}.forecast-text{font-size:18px}}@media(max-width:520px){.forecast-grid{grid-template-columns:1fr}.span-3,.span-4,.span-6,.span-8,.span-12{grid-column:auto}}

/* PLANER v1.4 */
.planner-topbar .brand{font-size:28px;letter-spacing:.06em}
.right-actions{display:flex;align-items:center;gap:10px;text-align:right}
.right-actions form{margin:0}.mini-btn{border:0;border-radius:10px;background:#e5e7eb;color:#111827;font-weight:900;cursor:pointer;width:32px;height:32px}.mini-btn:hover{background:#d1d5db}.compact-form{background:#f9fafb;border:1px solid var(--line);border-radius:16px;padding:12px}.forecast .muted{margin-top:6px}.kpi-value{line-height:1.1}.card h2{font-size:18px}.alert{border-color:#fed7aa;background:#fff7ed;color:#9a3412;margin-bottom:14px}.alert code{background:#ffedd5;padding:2px 6px;border-radius:8px}.forecast{display:flex;align-items:center;justify-content:space-between;gap:18px}.forecast.good{border-color:#bbf7d0;background:#f0fdf4}.forecast.warn{border-color:#fde68a;background:#fffbeb}.forecast.bad{border-color:#fecaca;background:#fef2f2}.forecast-text{font-size:22px;font-weight:900}.forecast-grid{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:10px;min-width:55%}.forecast-grid div,.debt-summary div{background:rgba(255,255,255,.72);border:1px solid var(--line);border-radius:14px;padding:12px}.forecast-grid span{display:block;color:var(--muted);font-size:12px;font-weight:700}.forecast-grid b{font-size:18px}.debt-summary{margin-bottom:10px}.debt-summary b{font-size:22px}@media(max-width:900px){.forecast{display:block}.forecast-grid{grid-template-columns:1fr 1fr;min-width:0;margin-top:12px}.forecast-text{font-size:18px}}@media(max-width:520px){.forecast-grid{grid-template-columns:1fr}.planner-topbar .brand{font-size:24px}.right-actions{gap:6px}.mini-btn{width:30px;height:30px}.span-3,.span-4,.span-6,.span-8,.span-12{grid-column:auto}}

/* PLANER v1.5 — shopping + wishlist */
.inner{box-shadow:none;margin-bottom:14px}
.wishlist-grid{display:grid;grid-template-columns:repeat(3,minmax(220px,1fr));gap:12px;margin-top:10px}
.wish-card{border:1px solid var(--line);border-radius:18px;background:#fff;padding:14px;display:flex;flex-direction:column;gap:8px}
.wish-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.wish-head span{font-size:12px;font-weight:900;border-radius:999px;padding:4px 8px;background:#f1f5f9;color:#334155;white-space:nowrap}
.wish-card.priority-high{border-color:#fecaca;background:#fff7f7}
.wish-card.priority-high .wish-head span{background:#fee2e2;color:#991b1b}
.wish-card.priority-normal{border-color:#bfdbfe;background:#eff6ff}
.wish-card.priority-normal .wish-head span{background:#dbeafe;color:#1d4ed8}
.wish-card.priority-low{border-color:#e5e7eb;background:#f9fafb}
.wish-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:auto}
.wish-actions form{display:flex;gap:6px;align-items:center;margin:0}
.wish-actions .input{width:150px;min-width:130px}
@media(max-width:980px){.wishlist-grid{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.wishlist-grid{grid-template-columns:1fr}.wish-actions{display:block}.wish-actions form{margin-top:8px}.wish-actions .input{width:100%}}

/* v1.6 products/prices */
.smart-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.smart-card{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;border:1px solid rgba(148,163,184,.25);border-radius:16px;background:rgba(15,23,42,.03);margin-bottom:8px}
.price-list{display:grid;grid-template-columns:1fr 1fr;gap:8px}
@media(max-width:820px){.smart-grid,.price-list{grid-template-columns:1fr}.smart-card{align-items:flex-start}}

/* PLANER v1.7 — wide desktop + morning panel */
@media (min-width: 1100px){
  .wrap{max-width:none;width:100%;padding:18px 32px}
  .grid{grid-template-columns:repeat(16,1fr);gap:16px}
  .span-3{grid-column:span 4}
  .span-4{grid-column:span 4}
  .span-6{grid-column:span 8}
  .span-8{grid-column:span 10}
  .span-12{grid-column:span 16}
}
@media (min-width: 1500px){
  .wrap{padding-left:46px;padding-right:46px}
  .span-8{grid-column:span 11}
  .span-4{grid-column:span 5}
}
.today-panel{border-width:2px}
.today-panel.good{border-color:#bbf7d0;background:linear-gradient(135deg,#f0fdf4,#fff)}
.today-panel.warn{border-color:#fde68a;background:linear-gradient(135deg,#fffbeb,#fff)}
.today-panel.bad{border-color:#fecaca;background:linear-gradient(135deg,#fef2f2,#fff)}
.today-main{display:grid;grid-template-columns:1.2fr 1fr;gap:16px;align-items:center}
.today-title{font-size:28px;font-weight:950;line-height:1.05;margin:4px 0 8px}
.today-money{display:grid;grid-template-columns:1fr auto;gap:8px 14px;background:rgba(255,255,255,.7);border:1px solid var(--line);border-radius:16px;padding:14px}
.today-money span{color:var(--muted);font-size:13px;font-weight:800}.today-money b{text-align:right}.upcoming-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:8px;margin-top:14px}.upcoming-item{display:grid;gap:3px;border:1px solid var(--line);border-radius:15px;background:#fff;padding:11px}.upcoming-item span{font-size:12px;font-weight:900;color:var(--muted)}.upcoming-item b{font-size:14px}.upcoming-item em{font-style:normal;font-weight:900}.upcoming-item.income em,.upcoming-item.debt_in em{color:var(--green)}.upcoming-item.payment em,.upcoming-item.debt_out em{color:var(--red)}.safety-card{border-width:2px}.safety-card.good{border-color:#86efac;background:#f0fdf4}.safety-card.warn{border-color:#fde047;background:#fefce8}.safety-card.bad{border-color:#fca5a5;background:#fef2f2}
@media(max-width:800px){.today-main{grid-template-columns:1fr}.today-title{font-size:22px}.today-money{grid-template-columns:1fr auto}.upcoming-strip{grid-template-columns:1fr}}

/* PLANER v1.8.1 — проведение покупки в расходы */
.shopping-buy-card{border:1px solid var(--line);border-radius:18px;background:#fff;padding:12px;margin-bottom:10px}
.shopping-buy-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}
.buy-form{display:grid;gap:8px;background:#f9fafb;border:1px solid var(--line);border-radius:16px;padding:10px}
.buy-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.buy-form .btn{justify-content:center;width:100%}
@media(max-width:720px){.buy-form-grid{grid-template-columns:1fr}.shopping-buy-head{display:block}.shopping-buy-head>b{display:block;margin-top:8px}}

/* PLANER v1.8.2 — правильная сумма покупки + журнал балансов */
.buy-total-line{display:flex;justify-content:space-between;align-items:center;background:#fff;border:1px dashed #cbd5e1;border-radius:14px;padding:10px 12px;font-weight:800;color:#334155}
.buy-total-line b{font-size:18px;color:var(--red)}
#ledger table td:nth-child(3){min-width:260px}
@media(max-width:760px){#ledger{overflow:auto}#ledger table{min-width:760px}.buy-total-line{font-size:14px}}

/* PLANER v1.9 — аудит балансов */
.audit-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:14px;align-items:start}
.audit-row{display:grid;grid-template-columns:1.2fr .6fr .6fr;gap:10px;align-items:center;border:1px solid var(--line);border-radius:16px;background:#fff;padding:12px;margin-bottom:8px}
.audit-row.good{border-color:#bbf7d0;background:#f0fdf4}.audit-row.warn{border-color:#fde68a;background:#fffbeb}.audit-row.bad{border-color:#fecaca;background:#fef2f2}
.audit-money{display:grid;gap:2px;text-align:right}.audit-money span{font-size:12px;color:var(--muted);font-weight:800}.audit-money b{font-size:16px}.checkline{display:flex;gap:8px;align-items:flex-start;color:#334155;font-size:13px;line-height:1.35}.checkline input{margin-top:2px}
@media(max-width:920px){.audit-grid{grid-template-columns:1fr}.audit-row{grid-template-columns:1fr}.audit-money{text-align:left}}

/* PLANER v2.0 — календарь и напоминания */
.calendar-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:14px;align-items:start}
.event-row{display:grid;grid-template-columns:82px 1fr auto;gap:12px;align-items:center;border:1px solid var(--line);border-radius:16px;background:#fff;padding:12px;margin-bottom:8px}
.event-row.birthday{border-color:#fbcfe8;background:#fdf2f8}.event-row.auto{border-color:#bfdbfe;background:#eff6ff}.event-row.work{border-color:#ddd6fe;background:#f5f3ff}.event-row.payment{border-color:#fed7aa;background:#fff7ed}.event-row.shopping{border-color:#bbf7d0;background:#f0fdf4}.event-row.family{border-color:#bae6fd;background:#f0f9ff}
.event-date{display:grid;gap:2px;text-align:center;background:rgba(255,255,255,.7);border:1px solid var(--line);border-radius:14px;padding:8px}.event-date b{font-size:18px}.event-date span{font-size:12px;font-weight:800;color:var(--muted)}.event-info b{font-size:16px}
.upcoming-item.event em{color:#6366f1}
@media(max-width:900px){.calendar-grid{grid-template-columns:1fr}.event-row{grid-template-columns:70px 1fr auto}}
@media(max-width:560px){.event-row{grid-template-columns:1fr auto}.event-date{text-align:left;grid-column:1 / -1}.event-info{min-width:0}}

/* PLANER v2.1 — советник дня и сценарии доходов */
.advisor-panel{border-width:2px}
.advisor-panel.good{border-color:#bbf7d0;background:linear-gradient(135deg,#f0fdf4,#fff)}
.advisor-panel.warn{border-color:#fde68a;background:linear-gradient(135deg,#fffbeb,#fff)}
.advisor-panel.bad{border-color:#fecaca;background:linear-gradient(135deg,#fef2f2,#fff)}
.advisor-head{display:grid;grid-template-columns:1.2fr .8fr;gap:16px;align-items:center;margin-bottom:12px}
.advisor-title{font-size:26px;font-weight:950;line-height:1.1;margin:4px 0 6px}
.advisor-limit{display:grid;grid-template-columns:1fr auto;gap:7px 14px;background:rgba(255,255,255,.74);border:1px solid var(--line);border-radius:16px;padding:14px}
.advisor-limit span{font-size:13px;font-weight:800;color:var(--muted)}
.advisor-limit b{text-align:right;font-size:18px}
.advisor-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.advisor-grid>div{background:rgba(255,255,255,.78);border:1px solid var(--line);border-radius:16px;padding:12px;display:grid;gap:4px}
.advisor-grid span{font-size:12px;font-weight:900;color:var(--muted)}
.advisor-grid b{font-size:18px}.advisor-grid em{font-style:normal;color:var(--muted);font-size:13px;line-height:1.35}
.income-confirm-box{margin-top:12px;background:#fff;border:1px solid #fed7aa;border-radius:16px;padding:12px}
.income-confirm-form{display:grid;grid-template-columns:1fr 150px 150px auto;gap:8px;align-items:center;margin-top:8px;padding-top:8px;border-top:1px solid var(--line)}
.planned-income-row{display:grid;grid-template-columns:1fr auto minmax(360px,.8fr);gap:12px;align-items:center;border-bottom:1px solid var(--line);padding:10px 0}
.planned-income-row:last-of-type{border-bottom:0}.planned-income-mini{display:grid;grid-template-columns:1fr 1fr auto;gap:8px;align-items:center}
.whatif-box{border:1px dashed var(--line);border-radius:14px;padding:10px;display:grid;gap:4px;background:#fff}.whatif-box.good{border-color:#86efac;background:#f0fdf4}.whatif-box.bad{border-color:#fca5a5;background:#fef2f2}.whatif-box span{font-size:13px;color:#334155;display:flex;justify-content:space-between;gap:8px}
@media(max-width:980px){.advisor-head,.advisor-grid{grid-template-columns:1fr}.income-confirm-form,.planned-income-row,.planned-income-mini{grid-template-columns:1fr}.advisor-limit b{text-align:left}}

/* v2.2 budget modes */
.budget-switch{margin:0 auto 18px;max-width:1560px;display:flex;align-items:center;justify-content:space-between;gap:16px;}
.switch-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;}
.mini-btn.active{background:#0f172a;color:#fff;border-color:#0f172a;}
@media (max-width:800px){.budget-switch{display:block}.switch-actions{justify-content:flex-start;margin-top:10px}}
