:root{
  color-scheme: light;
  --bg:#eef2f6;
  --bg-accent:#dfe6ef;
  --surface:#f7f9fc;
  --surface-2:#f1f5f9;
  --surface-3:#e8eef6;
  --line:#cdd6e3;
  --line-strong:#b5c1d3;
  --text:#152033;
  --muted:#718199;
  --primary:#5b8cff;
  --primary-2:#4a79ea;
  --primary-soft:#e8efff;
  --accent:#3f6fe0;
  --good:#2f9f72;
  --good-soft:#eefbf4;
  --bad:#c62828;
  --bad-soft:#fff1f1;
  --shadow:0 14px 34px rgba(70,84,110,.10);
  --radius-xl:24px;
  --radius-lg:18px;
  --radius-md:14px;
}
:root[data-theme="dark"]{
  color-scheme: dark;
  --bg:#636f82;
  --bg-accent:#515d70;
  --surface:#243142;
  --surface-2:#2c3a4d;
  --surface-3:#34455c;
  --line:#46556d;
  --line-strong:#62738d;
  --text:#eef3fb;
  --muted:#b6c0cf;
  --primary:#7aa0ff;
  --primary-2:#698fe8;
  --primary-soft:#354761;
  --accent:#a9c0ff;
  --good:#58b68b;
  --good-soft:#263f35;
  --bad:#ff8a8a;
  --bad-soft:#4a2e34;
  --shadow:0 18px 42px rgba(24,32,46,.20);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;background:linear-gradient(180deg,var(--bg) 0%,var(--bg-accent) 100%);color:var(--text);font:500 15px/1.35 Inter,system-ui,Segoe UI,Arial,sans-serif;-webkit-font-smoothing:antialiased}
body{min-height:100vh;overscroll-behavior-y:contain}
body.modal-open{overflow:hidden}
button,input{font:inherit}
button{cursor:pointer}
.app-shell{width:min(100%,560px);margin:0 auto;padding:calc(10px + env(safe-area-inset-top)) 8px calc(22px + env(safe-area-inset-bottom));transition:transform .18s ease,opacity .18s ease;will-change:transform}
.hero,.tabs,.toolbar,.compact-card,.modal-sheet,.section-block,.range-btn,.summary-board{background:color-mix(in srgb,var(--surface) 94%, white 6%);border:1px solid var(--line);border-radius:var(--radius-xl);box-shadow:var(--shadow)}
.hero{padding:10px 10px 8px;margin-bottom:8px}
.hero-top{display:flex;justify-content:space-between;gap:8px;align-items:flex-start;margin-bottom:8px}
.hero h1{margin:0;font-size:18px;line-height:1.08;font-weight:900;letter-spacing:-.03em}
.hero-sub{margin:4px 0 0;color:var(--muted);font-size:13px}
.hero-actions{display:flex;gap:8px}
.icon-btn{width:42px;height:42px;border-radius:15px;border:1px solid var(--line);background:var(--surface-2);color:var(--text);display:grid;place-items:center;font-size:17px;padding:0;transition:.18s ease}
.icon-btn.small{width:36px;height:36px;border-radius:12px}
.icon-btn:hover{background:var(--surface-3)}
.period-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:8px}
.chip,.tab,.mini-chip{min-height:38px;border-radius:14px;border:1px solid var(--line);background:var(--surface-2);color:var(--text);font-weight:800;padding:0 11px;transition:.18s ease}
.chip.is-active,.tab.is-active,.mini-chip.is-active{background:linear-gradient(180deg,var(--primary),var(--primary-2));color:#fff;border-color:transparent;box-shadow:0 10px 18px rgba(74,125,255,.24)}
.range-btn{width:100%;display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:var(--surface-2);box-shadow:none}
.range-label{font-size:13px;color:var(--muted);font-weight:800}
.range-value{font-weight:900;font-size:17px;letter-spacing:-.02em}
.tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;padding:5px;margin-bottom:8px}
.toolbar{padding:7px;margin-bottom:10px}
.search{width:100%;height:44px;border-radius:14px;border:1px solid var(--line);background:var(--surface-2);padding:0 14px;color:var(--text);font-size:16px;-webkit-appearance:none;appearance:none}
.search::placeholder{color:var(--muted)}
.content{display:grid;gap:10px}
.summary-board{padding:10px}
.summary-section + .summary-section{margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
.summary-subhead{font-size:12px;font-weight:900;color:var(--muted);margin:0 0 8px}
.summary-grid{display:grid;gap:8px}
.top-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.finance-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.bonus-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.metric-box{min-height:68px;border:1px solid var(--line);border-radius:16px;background:var(--surface-2);padding:10px 10px 8px}
.metric-box.is-tappable{cursor:pointer}
.metric-box.is-tappable:active{transform:translateY(1px)}
.metric-label{font-size:12px;color:var(--muted);margin-bottom:6px;font-weight:700}
.metric-value{font-size:20px;font-weight:900;line-height:1.08;letter-spacing:-.02em}
.metric-foot{margin-top:5px;font-size:11px;color:var(--muted)}
.cards-stack{display:grid;gap:6px}
.compact-card{padding:8px 9px 8px;overflow:hidden}
.compact-card.is-tappable{cursor:pointer}
.compact-head{display:flex;justify-content:space-between;gap:8px;align-items:flex-start;margin-bottom:6px}
.compact-titles{min-width:0}
.compact-title{margin:0;font-size:16px;line-height:1.12;font-weight:900;letter-spacing:-.02em}
.card-arrow{color:var(--muted)}
.compact-subtitle{font-size:12px;color:var(--muted);margin-top:2px}
.compact-badges{display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.badge{display:inline-flex;align-items:center;justify-content:center;min-height:26px;padding:0 9px;border-radius:999px;border:1px solid var(--line-strong);background:var(--surface-2);font-size:11px;font-weight:900;white-space:nowrap}
.badge-accent{color:var(--accent);background:color-mix(in srgb,var(--primary-soft) 82%, var(--surface))}
.badge-muted{color:var(--muted)}
.compact-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.tiny-stat{min-height:62px;border:1px solid var(--line);border-radius:14px;background:var(--surface-2);padding:9px 10px}
.tiny-stat-label{font-size:11px;color:var(--muted);margin-bottom:6px;font-weight:700}
.tiny-stat-value{font-size:17px;font-weight:900;line-height:1.08;letter-spacing:-.02em}
.loading,.empty-state{padding:24px 16px;text-align:center;background:var(--surface);border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow)}
.empty-title{font-size:18px;font-weight:900}
.empty-text{margin-top:6px;color:var(--muted)}
.modal{position:fixed;inset:0;z-index:40}
.modal.hidden{display:none}
.modal-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.3);backdrop-filter:blur(2px)}
.modal-sheet{position:absolute;left:8px;right:8px;top:52px;bottom:6px;background:var(--surface);display:flex;flex-direction:column;overflow:hidden}
.modal-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 12px 9px;border-bottom:1px solid var(--line)}
.modal-head h2{margin:0;font-size:16px;font-weight:900;letter-spacing:-.02em}
.modal-body{padding:10px;overflow:auto;display:grid;gap:10px;touch-action:pan-y}
.section-block{padding:8px;box-shadow:none}
.section-title{font-size:15px;font-weight:900;margin-bottom:2px}
.section-subtitle{font-size:12px;color:var(--muted);margin-bottom:8px}
.list-rows{display:grid;gap:7px}
.list-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:10px;padding:10px 11px;border:1px solid var(--line);border-radius:14px;background:var(--surface-2)}
.list-row.is-tappable{cursor:pointer}
.list-row-title{font-size:14px;font-weight:900;line-height:1.2}
.list-row-meta{font-size:12px;color:var(--muted);margin-top:2px}
.list-row-submeta{font-size:12px;color:var(--muted);margin-top:6px}
.list-row-value{font-size:14px;font-weight:900;text-align:right;white-space:nowrap}
.range-sheet{top:48px;bottom:6px}
.range-body{padding-top:8px}
.range-preset-row{display:flex;gap:8px;flex-wrap:wrap}
.range-preset-row .mini-chip{min-height:38px;padding:0 12px;font-size:13px}
.range-monthbar{display:grid;grid-template-columns:36px 1fr 36px;align-items:center;gap:10px}
.range-month-title{font-size:15px;font-weight:900;text-transform:capitalize;text-align:center}
.range-calendars{display:grid;grid-template-columns:1fr;gap:10px;touch-action:pan-y}
.cal-month{border:1px solid var(--line);border-radius:18px;background:var(--surface-2);padding:12px}
.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.cal-dw{font-size:11px;color:var(--muted);text-align:center;padding:4px 0}
.cal-day{min-height:34px;border:none;border-radius:10px;background:transparent;color:var(--text);font-weight:800}
.cal-day.off{color:color-mix(in srgb,var(--muted) 60%, transparent)}
.cal-day.in{background:color-mix(in srgb,var(--primary-soft) 80%, var(--surface));color:var(--accent)}
.cal-day.sel{background:linear-gradient(180deg,var(--primary),var(--primary-2));color:#fff;box-shadow:0 8px 16px rgba(74,125,255,.24)}
.range-footer{display:grid;gap:12px;align-items:center}
.range-summary{font-size:14px;font-weight:900}
.range-actions{display:flex;gap:10px;justify-content:flex-end}
.ghost-btn,.primary-btn{min-height:46px;padding:0 18px;border-radius:16px;font-weight:900;border:1px solid var(--line)}
.ghost-btn{background:var(--surface-2);color:var(--text)}
.primary-btn{border:none;background:linear-gradient(180deg,var(--primary),var(--primary-2));color:#fff;box-shadow:0 12px 24px rgba(74,125,255,.24)}
.busy-overlay{position:fixed;inset:0;z-index:80;background:rgba(15,23,42,.24);display:flex;align-items:center;justify-content:center;padding:20px}
.busy-overlay.hidden{display:none}
.busy-box{min-width:240px;background:var(--surface);border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow);padding:18px 18px 16px;text-align:center}
.busy-spinner,.ptr-spinner{width:34px;height:34px;border-radius:50%;border:3px solid color-mix(in srgb,var(--primary) 22%, transparent);border-top-color:var(--primary);animation:spin .85s linear infinite}
.busy-spinner{margin:0 auto 10px}
.busy-title{font-size:14px;font-weight:900;margin-bottom:4px}
.busy-text{font-size:12px;color:var(--muted)}
.ptr-indicator{position:fixed;left:50%;top:0;z-index:70;transform:translate(-50%, var(--ptr-offset, 0px));transition:transform .18s ease, opacity .18s ease;opacity:1}
.ptr-indicator.hidden{opacity:0;pointer-events:none}
.ptr-pill{display:flex;align-items:center;gap:10px;min-height:46px;padding:0 14px;border-radius:999px;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow)}
.ptr-spinner{width:20px;height:20px;border-width:2px}
.ptr-text{font-size:13px;font-weight:800;color:var(--text)}
@keyframes spin{to{transform:rotate(360deg)}}
@media (max-width:520px){
  .app-shell{padding-left:6px;padding-right:6px}
  .hero,.summary-board,.compact-card,.modal-sheet,.toolbar,.tabs{border-radius:22px}
  .range-calendars{grid-template-columns:1fr}
  .compact-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .range-actions{grid-template-columns:1fr 1fr;display:grid}
  .ghost-btn,.primary-btn{width:100%}
}
@media (max-width:390px){
  html,body{font-size:14px}
  .hero h1{font-size:17px}
  .chip,.tab{min-height:42px}
  .metric-value{font-size:18px}
  .tiny-stat-value{font-size:15px}
  .compact-title{font-size:15px}
}

.modal-pane{display:grid;gap:12px;will-change:transform,opacity}
.modal-pane.is-forward{animation:slidePaneForward .18s ease}
.modal-pane.is-back{animation:slidePaneBack .18s ease}
@keyframes slidePaneForward{from{transform:translateX(18px);opacity:.0}to{transform:translateX(0);opacity:1}}
@keyframes slidePaneBack{from{transform:translateX(-18px);opacity:.0}to{transform:translateX(0);opacity:1}}
.summary-board{display:grid;gap:0}
.summary-section:first-child .summary-grid{margin-top:0}
.summary-subhead{letter-spacing:.02em;text-transform:uppercase}
.metric-box{background:var(--surface-2)}
.range-summary{font-size:13px;color:var(--muted)}

.modal-body,.modal-sheet,.range-body{overscroll-behavior:contain;}
.modal-sheet,.modal-body{touch-action:pan-y;}

.toolbar{display:none !important}
.content{overflow:hidden;will-change:transform}
.tabs,.content,.hero{-webkit-user-select:none;user-select:none;}
.compact-card,.summary-board,.list-row{touch-action:pan-y;}

/* Cash mini app */
.tabs{grid-template-columns:repeat(5,minmax(0,1fr))}
.cash-board .metric-value{font-size:18px}
.cash-section-inline{padding:8px;box-shadow:none}
.cash-section-inline + .cash-section-inline{margin-top:2px}
.cash-warn{margin-top:6px;color:#f97316;font-size:12px;font-weight:900;line-height:1.25}
.compact-footer-line{margin-top:6px;color:var(--muted);font-size:12px;font-weight:700;line-height:1.25}
.cash-event-comment{margin-top:5px;color:var(--accent);font-weight:900;line-height:1.25}
.cash-detail-note{margin-top:6px;color:var(--muted);font-size:12px;font-weight:800;line-height:1.35}
.cash-detail-warn{margin:8px 0;padding:8px 10px;border-radius:12px;background:var(--primary-soft);color:var(--accent);font-size:12px;font-weight:800}
.cash-detail-error{margin-top:6px;color:var(--bad);font-size:12px;font-weight:900;line-height:1.35}
.cash-detail-actions{margin:8px 0 10px}
.cash-toggle-btn{width:100%;min-height:40px;border-radius:14px;font-size:13px}
.cash-events-list .list-row{grid-template-columns:minmax(0,1fr) auto}
.cash-events-list .list-row-title{font-size:13px;white-space:nowrap}
.cash-events-list .list-row-value{font-size:13px;font-weight:950}
.amount-negative{color:#dc2626}
.amount-positive{color:#16a34a}
.cash-events-list .list-row-submeta{line-height:1.35}
@media (max-width:390px){
  .tabs{gap:4px}
  .tab{padding:0 4px;font-size:12px}
  .cash-board .summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}


/* Cash layout + visual separation fixes */
.chip,.tab{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tab{padding-left:6px;padding-right:6px;font-size:13px}
.cash-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.cash-board{background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 96%, white 4%),color-mix(in srgb,var(--surface-2) 94%, white 6%))}
.cash-inflow-card{background:linear-gradient(135deg,var(--good-soft),color-mix(in srgb,var(--surface-2) 74%, var(--good-soft) 26%));border-color:color-mix(in srgb,var(--good) 42%, var(--line));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--good) 12%, transparent)}
.cash-inflow-card .metric-label,.cash-inflow-card .metric-value{color:var(--good)}
.cash-outflow-card{background:linear-gradient(135deg,var(--bad-soft),color-mix(in srgb,var(--surface-2) 72%, var(--bad-soft) 28%));border-color:color-mix(in srgb,var(--bad) 42%, var(--line));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--bad) 12%, transparent)}
.cash-outflow-card .metric-label,.cash-outflow-card .metric-value{color:var(--bad)}
.cash-neutral-card{background:linear-gradient(180deg,color-mix(in srgb,var(--surface-2) 92%, white 8%),var(--surface-2))}
.cash-section-inline{padding:10px;background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 97%, white 3%),color-mix(in srgb,var(--surface-3) 48%, var(--surface) 52%));border-color:color-mix(in srgb,var(--line-strong) 82%, var(--primary) 18%);box-shadow:0 10px 24px rgba(70,84,110,.08)}
.cash-section-inline + .cash-section-inline{margin-top:6px}
.cash-section-inline .section-title{font-size:16px;letter-spacing:-.02em}
.cash-section-inline .cards-stack{gap:8px}
.cash-section-inline .compact-card{background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 92%, white 8%),color-mix(in srgb,var(--surface-2) 94%, white 6%));border-color:color-mix(in srgb,var(--line-strong) 78%, var(--primary) 22%);box-shadow:0 8px 18px rgba(70,84,110,.07)}
.cash-section-inline .compact-card.is-tappable:active{transform:translateY(1px)}
.tiny-stat.cash-plus{background:linear-gradient(135deg,var(--good-soft),color-mix(in srgb,var(--surface-2) 78%, var(--good-soft) 22%));border-color:color-mix(in srgb,var(--good) 30%, var(--line))}
.tiny-stat.cash-plus .tiny-stat-label,.tiny-stat.cash-plus .tiny-stat-value{color:var(--good)}
.tiny-stat.cash-minus{background:linear-gradient(135deg,var(--bad-soft),color-mix(in srgb,var(--surface-2) 78%, var(--bad-soft) 22%));border-color:color-mix(in srgb,var(--bad) 30%, var(--line))}
.tiny-stat.cash-minus .tiny-stat-label,.tiny-stat.cash-minus .tiny-stat-value{color:var(--bad)}
.tiny-stat.cash-zero,.tiny-stat.cash-neutral{background:linear-gradient(180deg,color-mix(in srgb,var(--surface-2) 94%, white 6%),var(--surface-2))}
@media (max-width:390px){
  .tab{font-size:12px;padding-left:3px;padding-right:3px}
}

/* Сети / кластеры доступа */
.network-switcher {
  display: flex;
  gap: 8px;
  margin: 10px 0 0;
  padding: 4px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--surface) 86%, transparent);
  border: 1px solid var(--line);
  overflow-x: auto;
  scrollbar-width: none;
}
.network-switcher::-webkit-scrollbar { display: none; }
.network-switcher.hidden { display: none; }
.network-chip {
  border: 0;
  border-radius: 999px;
  padding: 9px 13px;
  font: inherit;
  font-size: 13px;
  font-weight: 800;
  white-space: nowrap;
  color: var(--muted);
  background: transparent;
}
.network-chip.is-active {
  color: #fff;
  background: var(--accent);
  box-shadow: 0 8px 22px color-mix(in srgb, var(--accent) 28%, transparent);
}

.cash-event-store{font-weight:900;color:var(--text)}

/* Cash detail search */
.cash-search-box{margin:8px 0 6px;padding:8px;border:1px solid var(--line);border-radius:14px;background:var(--surface-2)}
.cash-search-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;align-items:center}
.cash-search-input{width:100%;min-height:42px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--text);padding:0 11px;font:inherit;font-size:16px;font-weight:800;line-height:20px;outline:none;-webkit-appearance:none;appearance:none}
.cash-search-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--primary-soft)}
.cash-search-clear{width:42px;height:42px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--muted);font-size:20px;font-weight:900;line-height:1}
.cash-search-hint{margin-top:6px;color:var(--muted);font-size:11px;font-weight:800;line-height:1.25}
.cash-filter-sum{margin:8px 0;padding:9px 11px;border:1px solid var(--line);border-radius:14px;background:var(--surface-2);display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12px;font-weight:900;line-height:1.2}
.cash-filter-sum span{color:var(--muted)}
.cash-filter-sum strong{font-size:15px;font-weight:950;white-space:nowrap}


/* iOS input zoom guard */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
input,textarea,select{font-size:16px}
