:root{
  --bg:#f3f6fb;
  --panel:#ffffff;
  --panel-2:#f8faff;
  --line:#dbe3f0;
  --text:#172235;
  --muted:#6d7a92;
  --dark:#111827;
  --dark-2:#162237;
  --blue:#2d6cff;
  --blue-2:#eaf1ff;
  --green:#1f9d63;
  --green-bg:#edf9f2;
  --red:#d14343;
  --red-bg:#fff0f0;
  --yellow:#b77606;
  --yellow-bg:#fff8e8;
  --radius:22px;
  --shadow:0 12px 36px rgba(18,33,66,.08);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
body{min-height:100vh}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
a{text-decoration:none;color:inherit}
.hidden{display:none!important}
.money.pos{color:var(--green)}
.money.neg{color:var(--red)}
.app-shell{display:flex;min-height:100vh}
.side-nav{width:296px;flex:0 0 296px;background:linear-gradient(180deg,#12203a 0%,#0d1628 100%);color:#eef4ff;padding:20px 16px;display:flex;flex-direction:column;gap:16px;position:sticky;top:0;height:100vh;box-shadow:16px 0 44px rgba(5,13,30,.16);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.24) transparent}
.nav-brand{display:flex;align-items:center;gap:14px;padding:14px;border-radius:24px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08);flex-shrink:0}
.nav-brand strong{display:block;font-size:24px;line-height:1.1}
.nav-brand small{display:block;color:#a9b8d3;margin-top:4px}
.nav-logo{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;font-size:24px;font-weight:800;background:linear-gradient(135deg,#2f6eff,#69a5ff);box-shadow:inset 0 0 0 1px rgba(255,255,255,.12)}
.nav-group{display:flex;flex-direction:column;gap:8px;flex-shrink:0}
.nav-group-title{text-transform:uppercase;letter-spacing:.08em;font-size:11px;color:#8ea0c1;padding:2px 10px 6px}
.side-nav button{border:none;background:transparent;color:#edf3ff;padding:14px 14px;border-radius:18px;display:flex;align-items:center;gap:12px;text-align:left;position:relative;transition:.18s ease}
.side-nav button span{width:20px;text-align:center;font-weight:700;opacity:.9}
.side-nav button em{font-style:normal;font-weight:600}
.side-nav button:hover{background:rgba(255,255,255,.08)}
.side-nav button.active{background:linear-gradient(180deg,rgba(53,105,255,.92),rgba(47,95,228,.92));box-shadow:0 12px 24px rgba(22,74,205,.35)}
.nav-badge{margin-left:auto;background:#fff;color:#183375;border-radius:999px;padding:2px 9px;font-size:12px;font-weight:800}
.nav-group-bottom{margin-top:auto}
.nav-add{justify-content:center;background:linear-gradient(180deg,#2f6eff,#2458d7)!important;border:1px solid rgba(255,255,255,.12)!important;box-shadow:0 16px 28px rgba(20,57,160,.36)}
.page-shell{flex:1;min-width:0;padding:24px 24px 40px}
.topbar{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:4px 2px 20px}
.topbar-left{display:flex;align-items:center;gap:14px}
.menu-toggle{display:none;border:none;background:var(--panel);width:44px;height:44px;border-radius:14px;box-shadow:var(--shadow)}
.topbar-title{font-size:26px;font-weight:800}
.topbar-subtitle{color:var(--muted);margin-top:4px}
.header-actions{display:flex;align-items:center;gap:12px}
.version{padding:8px 12px;border-radius:999px;background:var(--panel);border:1px solid var(--line);color:var(--muted);font-weight:700}
.ghost,.link,.secondary,.primary,.quick-card{transition:.18s ease}
.ghost{border:1px solid var(--line);background:var(--panel);color:var(--text);padding:10px 16px;border-radius:14px}
main{display:flex;flex-direction:column;gap:26px}
.page{display:none;gap:24px;flex-direction:column}
.page.active{display:flex}
.owner-head,.page-head,.section-title,.dialog-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
.page-head h1,.owner-head h1{margin:0;font-size:34px;line-height:1.05}
.page-head p,.owner-head p{margin:8px 0 0;color:var(--muted)}
.inline-head{align-items:flex-end}
.head-controls{display:flex;gap:12px;flex-wrap:wrap}
.hero-kpis,.mini-grid,.quick-grid{display:grid;gap:16px}
.hero-kpis{grid-template-columns:repeat(6,minmax(0,1fr))}
.card-kpi,.mini-kpi,.quick-card{background:var(--panel);border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow)}
.card-kpi{padding:18px 18px 16px;display:flex;flex-direction:column;gap:10px;min-height:120px}
.card-kpi span{color:var(--muted);font-size:14px}
.card-kpi strong{font-size:30px;line-height:1.1}
.card-kpi small{color:var(--muted)}
.card-kpi.alert{background:linear-gradient(180deg,#fff7f7,#fff0f0);border-color:#f3d3d3}
.card-kpi.good{background:linear-gradient(180deg,#f8fffb,#eefcf4);border-color:#d8efdf}
.alert-stack{display:grid;gap:12px}
.alert-card{background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:14px 16px;display:flex;align-items:flex-start;gap:12px;box-shadow:var(--shadow)}
.alert-card i{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-weight:700}
.alert-card.warning i{background:var(--yellow-bg);color:var(--yellow)}
.alert-card.danger i{background:var(--red-bg);color:var(--red)}
.alert-card.good i{background:var(--green-bg);color:var(--green)}
.dashboard-grid,.split-grid,.balance-grid{display:grid;gap:16px}
.dashboard-grid{grid-template-columns:1.2fr .8fr}
.quick-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.quick-card{padding:20px;border:none;text-align:left;display:flex;flex-direction:column;gap:10px}
.quick-card strong{font-size:18px}
.quick-card span{color:var(--muted)}
.quick-card:hover{transform:translateY(-2px);border-color:#c6d4f2}
.review-banner{border:none;border-radius:16px;background:linear-gradient(180deg,#fff6e5,#ffefcb);padding:14px 18px;display:flex;align-items:center;gap:10px;font-weight:700;color:#7d5903}
.section{background:var(--panel);border:1px solid var(--line);border-radius:28px;padding:22px;box-shadow:var(--shadow)}
.section.compact{padding:20px}
.filters-card{display:flex;flex-direction:column;gap:16px}
.section-title h2,.section h2{margin:0;font-size:22px}
.section-title .link{padding:0;border:none;background:transparent;color:var(--blue);font-weight:700}
.hint,.report-caption{color:var(--muted)}
.filters{display:flex;flex-direction:column;gap:14px}
.filters input,.filters select,input[type="date"],input[type="month"],select,textarea{width:100%;padding:13px 14px;border-radius:14px;border:1px solid var(--line);background:#fff;color:var(--text)}
textarea{min-height:84px;resize:vertical}
.filter-grid{display:grid;gap:12px}
.operation-filter-grid{grid-template-columns:repeat(5,minmax(0,1fr))}
.filter-actions{display:flex;gap:10px;flex-wrap:wrap}
.primary,.secondary{border-radius:14px;border:1px solid transparent;padding:12px 16px;font-weight:700}
.primary{background:linear-gradient(180deg,#2f6eff,#2458d7);color:#fff;box-shadow:0 12px 24px rgba(47,108,255,.24)}
.secondary{background:var(--blue-2);color:#2148a7;border-color:#d5e0fb}
.primary:hover,.secondary:hover,.ghost:hover{transform:translateY(-1px)}
.list,.review-list{display:flex;flex-direction:column;gap:12px}
.row-card,.review-card,.account-card{border:1px solid var(--line);border-radius:18px;padding:16px;background:var(--panel-2)}
.row-card{display:grid;grid-template-columns:130px 1.2fr 1fr 160px;gap:12px;align-items:center}
.row-card strong{display:block}
.row-card small,.review-card p,.review-card .suggestion,.account-card small{color:var(--muted)}
.row-card .money{justify-self:end;font-weight:800}
.operation-table-head{display:grid;grid-template-columns:130px 1.2fr 1fr 160px;gap:12px;padding:0 4px 8px;color:var(--muted);font-size:13px;text-transform:uppercase;letter-spacing:.04em}
.review-card{display:flex;flex-direction:column;gap:12px}
.review-top{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.review-top h4{margin:0 0 4px;font-size:18px}
.review-actions{display:flex;gap:10px;flex-wrap:wrap}
.review-actions button{border:1px solid var(--line);background:#fff;border-radius:12px;padding:10px 14px}
.review-actions .confirm{background:var(--blue);color:#fff;border-color:var(--blue)}
.badge{display:inline-flex;align-items:center;justify-content:center;padding:6px 10px;border-radius:999px;background:#eef3ff;color:#244cbc;font-weight:800;min-width:36px}
.badge.neutral{background:#f2f4f8;color:#55637a}
.result,.status-box,.tx-info{background:#0f172a;color:#e6edf9;border-radius:18px;padding:14px;border:1px solid #1e2942;white-space:pre-wrap}
.tx-info{margin-bottom:12px}
.process-list{display:grid;grid-template-columns:36px 1fr;gap:12px;align-items:start}
.process-list span{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:var(--blue-2);color:#2148a7;font-weight:800}
.mini-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.mini-kpi{padding:16px 18px;background:var(--panel-2);border:1px solid var(--line);border-radius:20px}
.mini-kpi span{display:block;color:var(--muted);font-size:14px;margin-bottom:8px}
.mini-kpi strong{font-size:24px}
.table-shell{overflow:auto;border:1px solid var(--line);border-radius:20px;background:#fff}
.report-table{width:100%;border-collapse:separate;border-spacing:0;min-width:720px}
.report-table th,.report-table td{padding:14px 16px;border-bottom:1px solid #e8eef9;white-space:nowrap;text-align:right}
.report-table thead th{position:sticky;top:0;background:#f5f8ff;z-index:1;color:#52627b;font-size:13px;text-transform:uppercase;letter-spacing:.04em}
.report-table th:first-child,.report-table td:first-child{text-align:left;position:sticky;left:0;background:inherit;z-index:2}
.report-table tbody td:first-child{background:#fff}
.report-table tbody tr:hover td{background:#fbfcff}
.report-table tbody tr:hover td:first-child{background:#fbfcff}
.report-table tbody tr.total-row td{background:#f7faff;font-weight:800}
.report-table .muted{color:var(--muted)}
.empty{padding:20px;border:1px dashed var(--line);border-radius:18px;color:var(--muted);background:#fafcff}
.account-card{display:flex;justify-content:space-between;align-items:center;gap:16px}
.account-card strong{font-size:22px}
.checkbox{display:flex;gap:10px;align-items:flex-start}
.checkbox input{width:auto;margin-top:4px}
label{display:flex;flex-direction:column;gap:8px;font-weight:600}
dialog{border:none;border-radius:24px;padding:0;box-shadow:0 24px 64px rgba(0,0,0,.28);width:min(560px,calc(100vw - 20px))}
dialog::backdrop{background:rgba(9,15,28,.54)}
dialog form{padding:22px;background:#fff;border-radius:24px;display:flex;flex-direction:column;gap:14px}
.dialog-head h3{margin:0;font-size:24px}
.close{border:none;background:#eff3fb;border-radius:12px;padding:8px 12px}
.segmented{display:grid;grid-template-columns:1fr 1fr;gap:8px;background:#f1f4fb;border-radius:16px;padding:6px}
.segmented button{border:none;padding:12px 14px;border-radius:12px;background:transparent;font-weight:700}
.segmented .active{background:#fff;box-shadow:0 4px 14px rgba(15,23,42,.08)}
.twocol{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.full{width:100%}
.month-input,.range-select{min-width:180px}
@media (max-width:1360px){
  .hero-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
  .quick-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .operation-filter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:1180px){
  .side-nav{position:fixed;left:16px;top:16px;bottom:16px;height:auto;max-height:calc(100dvh - 32px);transform:translateX(-120%);z-index:20;border-radius:28px;overflow-y:auto;touch-action:pan-y}
  .side-nav.open{transform:translateX(0)}
  .menu-toggle{display:grid;place-items:center}
  .page-shell{padding:20px 16px 32px}
  .dashboard-grid,.split-grid,.balance-grid,.hero-kpis{grid-template-columns:1fr}
  .operation-filter-grid,.mini-grid,.quick-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:760px){
  .page-head h1,.owner-head h1{font-size:28px}
  .topbar{align-items:flex-start;flex-direction:column}
  .header-actions{width:100%;justify-content:space-between}
  .operation-filter-grid,.mini-grid,.quick-grid,.twocol{grid-template-columns:1fr}
  .row-card,.operation-table-head{grid-template-columns:1fr}
  .row-card .money{justify-self:start}
  .report-table th:first-child,.report-table td:first-child{position:static}
  .report-table thead th{position:static}
}

/* v0.8 owner finance structure */
.owner-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end}
.period-tabs{display:flex;gap:6px;padding:5px;background:#eef3fb;border:1px solid var(--line);border-radius:15px;flex-wrap:wrap}
.period-tabs button{border:none;background:transparent;padding:9px 14px;border-radius:11px;font-weight:800;color:#58677d;cursor:pointer}
.period-tabs button.active{background:#fff;color:#2148a7;box-shadow:0 4px 14px rgba(15,23,42,.08)}
.owner-money-grid{display:grid;grid-template-columns:.82fr 1.18fr;gap:16px}
.money-now-card{background:linear-gradient(145deg,#101b34,#17356e);color:#fff;border-color:#203c73;box-shadow:0 20px 45px rgba(26,59,120,.18)}
.money-now-card .hint,.money-now-card .eyebrow{color:#c9d7f1}
.eyebrow{display:block;text-transform:uppercase;letter-spacing:.08em;font-size:12px;font-weight:800;color:var(--muted);margin-bottom:8px}
.money-now-value{display:block;font-size:42px;line-height:1.05;margin:4px 0 8px}
.account-balance-grid{display:grid;gap:8px;margin-top:18px}
.account-balance-chip{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 13px;border-radius:14px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.09)}
.account-balance-chip.ozon{background:rgba(74,130,255,.20);border-color:rgba(149,181,255,.28)}
.account-balance-chip span{color:#dbe5f6;font-size:13px}
.account-balance-chip strong{font-size:16px;color:#fff}
.account-balance-chip strong.neg{color:#ffd0d0}
.owner-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.future-section{border-color:#dbe6ff;background:linear-gradient(180deg,#fff,#fbfdff)}
.bank-source-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.bank-source-card{background:var(--panel);border:1px solid var(--line);border-radius:24px;padding:20px;box-shadow:var(--shadow)}
.bank-source-card.primary-source{border-color:#cddcff;background:linear-gradient(180deg,#ffffff,#f7faff)}
.bank-source-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}
.bank-source-head h3{margin:0;font-size:22px}
.source-dot{width:12px;height:12px;border-radius:50%;margin-top:6px;background:#aab3c2;box-shadow:0 0 0 5px rgba(170,179,194,.13)}
.source-dot.ok{background:#29a362;box-shadow:0 0 0 5px rgba(41,163,98,.13)}
.bank-source-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:18px}
.bank-source-stats>div{padding:12px;border-radius:15px;background:#f7f9fd;border:1px solid #e8eef8}
.bank-source-stats span{display:block;color:var(--muted);font-size:12px;margin-bottom:5px}
.bank-source-stats strong{font-size:15px}
.bank-upload-card form,.stack-form{display:flex;flex-direction:column;gap:13px;margin-top:14px}
.rules-layout{grid-template-columns:.75fr 1.25fr}
.rules-list{display:flex;flex-direction:column;gap:12px;margin-top:14px}
.rule-card{display:flex;justify-content:space-between;gap:18px;align-items:center;padding:16px;border:1px solid var(--line);border-radius:18px;background:var(--panel-2)}
.rule-card.disabled{opacity:.58}
.rule-main{min-width:0}
.rule-title{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:8px}
.rule-title strong{font-size:17px}
.rule-conditions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.rule-conditions span{padding:6px 9px;border-radius:10px;background:#eef3ff;color:#3d4d68;font-size:12px}
.rule-main small{color:var(--muted)}
.rule-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.danger-ghost{color:#a83333;border-color:#efd1d1;background:#fff8f8}
.calendar-window-section{border-color:#dbe6ff}
@media (max-width:1180px){
  .owner-money-grid,.bank-source-grid,.rules-layout{grid-template-columns:1fr}
}
@media (max-width:760px){
  .owner-actions{width:100%;justify-content:flex-start}
  .period-tabs{width:100%}
  .period-tabs button{flex:1}
  .owner-summary-grid,.bank-source-stats{grid-template-columns:1fr}
  .money-now-value{font-size:34px}
  .rule-card{align-items:flex-start;flex-direction:column}
  .rule-actions{width:100%;justify-content:flex-start}
}


/* v0.8.1 update workflow + mobile navigation */
.update-upload-form{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:14px}
.update-upload-form input[type=file]{flex:1;min-width:220px}
.update-install-panel{margin-top:14px;padding:16px;border:1px solid #cddcff;border-radius:18px;background:linear-gradient(180deg,#f8fbff,#f2f7ff);display:flex;align-items:center;justify-content:space-between;gap:16px}
.update-install-panel strong{display:block;margin-bottom:4px}
.update-install-panel .hint{margin:0}
body.menu-open{overflow:hidden}
@media (max-width:760px){
  .update-upload-form,.update-install-panel{align-items:stretch;flex-direction:column}
  .update-upload-form input[type=file]{min-width:0;width:100%}
  .update-upload-form button,.update-install-panel button{width:100%}
}

/* v0.8.2 internal transfers */
.transfer-rules-section{margin-top:16px}
.transfer-rules-section>.section-title{align-items:flex-start}
.transfer-rules-section>.section-title h2{margin-bottom:4px}
.transfer-rule-form{padding:4px 0}
.built-in-transfer-note{display:flex;flex-direction:column;gap:6px;padding:14px 16px;border:1px solid #cfe2ff;border-radius:16px;background:#f6faff;color:#33445f;margin-bottom:12px}
.built-in-transfer-note strong{color:#2148a7}
.built-in-transfer-note span{font-size:13px;line-height:1.45}
.transfer-switch{padding:12px 14px;border:1px solid #d7e3fb;border-radius:14px;background:#f7faff}
.transfer-review-fields{display:flex;flex-direction:column;gap:14px;padding:14px;border:1px solid #cfe2ff;border-radius:16px;background:#f7faff}
.review-standard-fields{display:flex;flex-direction:column;gap:14px}
@media (max-width:760px){
  .page-head>.head-controls{width:100%;display:grid;grid-template-columns:1fr}
  .page-head>.head-controls button{width:100%}
}

/* v0.8.3 period selectors + directories */
.dashboard-period-controls{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}
.dashboard-period-controls label{font-size:12px;color:var(--muted);min-width:170px}
.dashboard-period-controls input,.dashboard-period-controls select{margin-top:2px;background:#fff}
.import-target-note{padding:10px 12px;border:1px solid #cfe0ff;background:#f7faff;border-radius:13px;color:#4b5f7c;font-size:13px}
.import-target-note strong{color:#1f3f91}
.directory-grid{display:grid;grid-template-columns:minmax(280px,.72fr) minmax(0,1.28fr);gap:18px;margin-top:16px}
.directory-form{margin-top:0}
.directory-list{display:flex;flex-direction:column;gap:10px}
.directory-card{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:15px 16px;border:1px solid var(--line);border-radius:18px;background:var(--panel-2)}
.directory-card.disabled{opacity:.58}
.directory-card.system{background:#f8f9fc}
.directory-card-main{min-width:0}
.directory-card-title{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:6px}
.directory-card-title strong{font-size:17px}
.directory-card small{color:var(--muted)}
.directory-card p{margin:7px 0 0;color:var(--muted);font-size:12px;word-break:break-word}
.directory-actions{display:flex;gap:10px;flex-wrap:wrap}
@media (max-width:980px){
  .directory-grid{grid-template-columns:1fr}
}
@media (max-width:760px){
  .dashboard-period-controls{width:100%;display:grid;grid-template-columns:1fr}
  .dashboard-period-controls label{min-width:0}
  .directory-card{align-items:flex-start;flex-direction:column}
  .directory-card>button{width:100%}
  .directory-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}
}

/* v0.8.4 — bank import preview/history */
.import-preview-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:12px}
.import-history-list{display:flex;flex-direction:column;gap:12px;margin-top:14px}
.import-history-card{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:16px 18px;border:1px solid var(--line);border-radius:18px;background:#fff}
.import-history-card.disabled{opacity:.62;background:#f8fafc}
.import-history-main{min-width:0;flex:1}
.import-history-main p{margin:6px 0;color:var(--text)}
.import-history-main small{display:block;color:var(--muted);line-height:1.45}
.import-history-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.danger-text{color:#b42318!important;border-color:#f3c7c2!important}
.move-preview{display:flex;flex-direction:column;gap:7px;margin:12px 0 16px;padding:14px 16px;border:1px solid var(--line);border-radius:16px;background:#f7f9fd;color:var(--muted)}
.move-preview strong,.move-preview b{color:var(--text)}
.muted-box{min-height:64px}
@media(max-width:760px){
  .import-history-card{align-items:flex-start;flex-direction:column}
  .import-history-actions{width:100%;justify-content:stretch}
  .import-history-actions button{flex:1}
  .import-preview-actions{justify-content:stretch}
  .import-preview-actions button{flex:1}
}

/* v0.8.5 — form-based authentication */
.login-page{min-height:100dvh;margin:0;background:radial-gradient(circle at 80% 10%,rgba(67,126,255,.18),transparent 34%),linear-gradient(160deg,#f6f8fc 0%,#edf3fb 100%);color:#122039;display:grid;place-items:center;padding:20px;box-sizing:border-box}
.login-shell{width:min(100%,440px)}
.login-card{background:rgba(255,255,255,.94);border:1px solid rgba(141,163,195,.28);border-radius:30px;padding:32px;box-shadow:0 26px 70px rgba(20,45,84,.16);backdrop-filter:blur(18px)}
.login-brand{display:flex;align-items:center;gap:16px;background:#12203a;color:#fff;border-radius:22px;padding:16px 18px;margin-bottom:30px}
.login-logo{width:56px;height:56px;border-radius:18px;display:grid;place-items:center;font-size:30px;font-weight:800;background:linear-gradient(145deg,#2f6cf5,#60a6ff);box-shadow:inset 0 0 0 1px rgba(255,255,255,.2)}
.login-brand strong{display:block;font-size:24px;line-height:1.15}.login-brand span{display:block;margin-top:4px;color:#aebbd0;font-size:14px}
.login-copy h1{font-size:32px;margin:0 0 6px}.login-copy p{margin:0 0 24px;color:#718099}
.login-form{display:grid;gap:17px}.login-form label>span:first-child{display:block;font-size:13px;font-weight:700;color:#5f6e85;margin:0 0 7px}
.login-form input[type="text"],.login-form input:not([type]),.login-form input[type="password"]{width:100%;box-sizing:border-box;border:1px solid #d6deea;background:#f9fbfe;border-radius:15px;padding:15px 16px;font:inherit;font-size:17px;color:#17243a;outline:none;transition:.18s}
.login-form input:focus{border-color:#4d80ef;box-shadow:0 0 0 4px rgba(77,128,239,.12);background:#fff}
.login-password-field{position:relative;display:block!important;margin:0!important}.login-password-field input{padding-right:100px!important}.login-password-toggle{position:absolute;right:8px;top:50%;transform:translateY(-50%);border:0;border-radius:10px;background:#eaf0fb;color:#31517f;padding:9px 11px;font:inherit;font-size:12px;font-weight:800;cursor:pointer}.login-password-toggle:hover{background:#dce7fa}.login-password-toggle:focus-visible{outline:3px solid rgba(77,128,239,.25)}
.remember-row{display:flex!important;align-items:flex-start;gap:11px;cursor:pointer;margin-top:1px}.remember-row input{width:19px!important;height:19px;margin:2px 0 0;accent-color:#3569ff}.remember-row>span{margin:0!important;color:#243550!important;font-size:14px!important;font-weight:400!important}.remember-row strong{display:block}.remember-row small{display:block;color:#8491a5;margin-top:3px;line-height:1.35}
.login-submit{width:100%;justify-content:center;padding:15px 18px;font-size:17px;border-radius:15px}.login-note{font-size:12px;color:#8995a8;line-height:1.45;margin:18px 0 0;text-align:center}
.login-error{background:#fff0f0;color:#b42318;border:1px solid #ffc9c9;border-radius:14px;padding:12px 14px;margin:0 0 17px;font-weight:600}
.login-success{background:#ecfdf3;color:#067647;border:1px solid #abefc6;border-radius:14px;padding:12px 14px;margin:0 0 17px;font-weight:700}.login-recovery-link{text-align:center;margin:15px 0 0}.login-recovery-link a{color:#315fcb;font-weight:800;text-decoration:none}.local-reset-ok{background:#eff8ff;color:#175cd3;border:1px solid #b2ddff;border-radius:14px;padding:12px 14px;margin-bottom:17px;font-size:13px;line-height:1.45}.local-reset-blocked{display:grid;gap:9px;background:#fff6ed;color:#9a3412;border:1px solid #fed7aa;border-radius:14px;padding:15px;line-height:1.45}.local-reset-blocked span{font-size:13px}.local-reset-blocked code{display:block;padding:9px;border-radius:9px;background:#fff;color:#17243a;overflow-wrap:anywhere}.password-rules{font-size:12px;color:#718099;line-height:1.45;margin-top:-6px}
.nav-logout-form{margin:4px 0 0}.side-nav .nav-logout{width:100%;color:#cbd6e8}.side-nav .nav-logout:hover{background:rgba(255,255,255,.08);color:#fff}
@media(max-width:640px){.login-page{padding:16px}.login-card{padding:22px;border-radius:25px}.login-brand{margin-bottom:25px}.login-copy h1{font-size:29px}}

/* v0.8.6 — recovery of bank imports created before history tracking */
.legacy-recovery{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:12px;padding-top:12px;border-top:1px dashed var(--line)}
.legacy-recovery select{min-width:260px;flex:1}
@media(max-width:700px){.legacy-recovery{align-items:stretch;flex-direction:column}.legacy-recovery select,.legacy-recovery button{width:100%;min-width:0}}

/* v0.8.8 safe duplicate cleanup */
.danger-outline{background:transparent;border:1px solid #dc5d67;color:#b93844;font-weight:700}
.danger-outline:hover{background:rgba(220,93,103,.08)}

/* v0.8.9 — operation dialog actions always reachable */
dialog#opDialog{max-height:calc(100dvh - 28px);overflow:auto}
dialog#opDialog form{box-sizing:border-box}
.duplicate-delete-block{display:grid;gap:7px;padding:12px;border:1px solid #f0c4c8;background:#fff8f8;border-radius:16px}
.duplicate-delete-block .hint{margin:0;color:#8b4a50;font-size:12px;line-height:1.4}
@media(max-width:760px){dialog#opDialog{max-height:calc(100dvh - 16px);width:calc(100vw - 16px)}dialog#opDialog form{padding:16px}.op-save-sticky{position:sticky;bottom:0;z-index:2;box-shadow:0 -8px 18px rgba(255,255,255,.94)}}

/* v0.8.10 — grouped ДДС / ОПиУ sections */
.grouped-report-table tbody tr.total-row:nth-of-type(3) td{
  border-bottom:0;
}
.grouped-report-table .report-group-row td{
  position:static;
  padding:11px 16px;
  border-top:12px solid #fff;
  border-bottom:1px solid var(--line);
  text-align:left;
  font-size:13px;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.06em;
}
.grouped-report-table .report-group-row td:first-child{
  position:static;
}
.grouped-report-table .report-group-row.income-group td{
  background:#edf9f4;
  color:#177457;
  border-bottom-color:#d6efe5;
}
.grouped-report-table .report-group-row.expense-group td{
  background:#fff3f3;
  color:#a34444;
  border-bottom-color:#f3dddd;
}
.grouped-report-table .detail-row td:first-child{
  padding-left:28px;
}
.grouped-report-table .income-detail td:first-child{
  box-shadow:inset 3px 0 0 #c9eadc;
}
.grouped-report-table .expense-detail td:first-child{
  box-shadow:inset 3px 0 0 #efd2d2;
}
.grouped-report-table .report-category-indent{
  display:inline-block;
  font-weight:600;
}
.grouped-report-table .money.zero{
  color:var(--muted);
}
@media (max-width: 760px){
  .grouped-report-table .report-group-row td{border-top-width:8px;padding:10px 12px}
  .grouped-report-table .detail-row td:first-child{padding-left:20px}
}

/* v0.9.0 — treasury core: obligations, plan/fact and cash calendar */
.treasury-head-actions{display:flex;align-items:flex-end;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.treasury-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.treasury-compare-card,.treasury-risk-card,.treasury-kpi{border:1px solid var(--line);border-radius:22px;background:var(--panel);box-shadow:var(--shadow);padding:17px 18px}
.treasury-compare-card.income{background:linear-gradient(180deg,#fbfffd,#f2fbf6);border-color:#d9eee1}
.treasury-compare-card.expense{background:linear-gradient(180deg,#fffdfd,#fff4f4);border-color:#f0dada}
.treasury-compare-card.net{background:linear-gradient(180deg,#fbfdff,#f2f6ff);border-color:#d9e3f8}
.compare-values{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:11px}
.compare-values>div{min-width:0;padding:9px 10px;border-radius:13px;background:rgba(255,255,255,.72);border:1px solid rgba(132,151,184,.14)}
.compare-values small,.treasury-risk-card small{display:block;color:var(--muted);font-size:11px;margin-bottom:4px}
.compare-values strong{font-size:16px;white-space:nowrap}
.compare-delta{font-size:12px;font-weight:700;margin-top:10px}.compare-delta.neg,.danger-copy{color:var(--red)}.compare-delta.pos{color:#2d7c50}
.treasury-risk-card{display:flex;flex-direction:column;gap:10px}.treasury-risk-card>div{display:flex;justify-content:space-between;gap:10px}.treasury-risk-card p{margin:2px 0 0;color:var(--muted);font-size:12px}
.treasury-debt-grid{grid-template-columns:1fr 1fr}.treasury-block.income-block{border-top:4px solid #8fd0a8}.treasury-block.expense-block{border-top:4px solid #eba2a2}
.treasury-total{text-align:right}.treasury-total strong{display:block;font-size:24px}.treasury-total small{color:var(--red);font-size:12px}
.treasury-list{display:flex;flex-direction:column;gap:10px;margin-top:14px}
.treasury-obligation-row{width:100%;border:1px solid var(--line);border-radius:18px;background:#fff;padding:14px 15px;display:grid;grid-template-columns:minmax(220px,1.3fr) minmax(420px,1.5fr) auto;gap:14px;align-items:center;text-align:left;color:var(--text);cursor:pointer}
.treasury-obligation-row:hover{border-color:#b9c9e9;box-shadow:0 7px 20px rgba(33,72,167,.07)}
.treasury-obligation-row.status-overdue{background:#fff9f8;border-color:#f2c9c5}.treasury-obligation-row.status-partial{background:#fffdf6;border-color:#eee0af}
.treasury-ob-main strong{font-size:16px;display:block}.treasury-ob-main small{color:var(--muted);display:block;margin-top:4px}.treasury-ob-main p{margin:5px 0 0;color:var(--muted);font-size:12px}
.treasury-ob-numbers{display:grid;grid-template-columns:repeat(4,minmax(80px,1fr));gap:7px}.treasury-ob-numbers>div{padding:7px 8px;border-radius:11px;background:#f7f9fd}.treasury-ob-numbers small{display:block;color:var(--muted);font-size:10px}.treasury-ob-numbers b{font-size:13px;white-space:nowrap}
.status-pill{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;padding:7px 9px;border-radius:999px;font-size:11px;font-weight:800;background:#eef2f7;color:#5a6678}.status-pill.overdue{background:#ffe8e5;color:#a8322b}.status-pill.partial{background:#fff2cb;color:#8b6500}.status-pill.paid,.status-pill.received{background:#e6f6ec;color:#287a49}
.unplanned-row{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:12px 14px;border:1px solid var(--line);border-radius:15px;background:#fbfcff}.unplanned-row strong{display:block}.unplanned-row small{display:block;color:var(--muted);margin-top:3px}
.treasury-kpi span{display:block;color:var(--muted);font-size:13px;margin-bottom:7px}.treasury-kpi strong{font-size:24px}.pos{color:#257a4b!important}.neg{color:#b43b3b!important}
.cash-gap-banner{border-radius:24px;padding:18px 20px;background:linear-gradient(135deg,#551b25,#8c2a35);color:#fff;box-shadow:0 16px 34px rgba(116,38,51,.18)}.cash-gap-banner .eyebrow{color:#ffd5d9}.cash-gap-banner strong{font-size:24px}.cash-gap-banner p{margin:7px 0 0;color:#ffe6e8}
.treasury-calendar-table tbody tr{cursor:pointer}.treasury-calendar-table tbody tr:hover td{background:#f2f7ff}.treasury-calendar-table td:first-child small{display:block;color:var(--muted);font-size:11px;margin-top:3px}
.treasury-money-fields{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.repeat-block{padding:13px 14px;border:1px solid #d9e4f8;border-radius:16px;background:#f8fbff}.repeat-block p{margin:6px 0 0}.dialog-actions{display:flex;justify-content:space-between;gap:10px}.dialog-actions .primary{flex:1}.treasury-dialog{width:min(660px,calc(100vw - 20px))}
.danger-outline{border:1px solid #efb8b8;background:#fff7f7;color:#a92d2d;padding:12px 16px;border-radius:14px;font-weight:700}
@media(max-width:1320px){.treasury-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.treasury-debt-grid{grid-template-columns:1fr}.treasury-obligation-row{grid-template-columns:1fr}.treasury-ob-numbers{grid-template-columns:repeat(4,1fr)}.status-pill{justify-self:start}}
@media(max-width:760px){.treasury-head-actions{width:100%;display:grid;grid-template-columns:1fr}.treasury-head-actions>*{width:100%}.treasury-summary-grid{grid-template-columns:1fr}.compare-values{grid-template-columns:1fr 1fr 1fr}.treasury-ob-numbers{grid-template-columns:1fr 1fr}.treasury-money-fields{grid-template-columns:1fr}.dialog-actions{flex-direction:column-reverse}.dialog-actions>*{width:100%}}

/* v0.9.1 — compact mobile dashboard + weekly payment schedules */
.repeat-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(150px,.6fr);gap:10px;align-items:end}
@media(max-width:760px){
  #page-dashboard .owner-copy{display:none}
  #page-dashboard .owner-head{display:block;margin-bottom:12px}
  #page-dashboard .owner-actions{display:grid;grid-template-columns:1fr;gap:10px;margin:0}
  #page-dashboard .period-tabs{order:0}
  #page-dashboard .dashboard-period-controls{order:1}
  #page-dashboard .review-banner{order:2}
  #page-dashboard .owner-money-grid{display:flex;flex-direction:column;gap:12px}
  #page-dashboard .money-now-card{order:0}
  #page-dashboard .owner-money-grid>.section:not(.money-now-card){order:1}
  #page-dashboard .future-section{margin-top:12px}
  #page-dashboard .dashboard-grid,#page-dashboard .quick-grid{display:none!important}
  #page-dashboard .section{padding:16px;border-radius:22px}
  #page-dashboard .money-now-card .hint{display:none}
  #page-dashboard .money-now-value{font-size:38px;margin-bottom:14px}
  #page-dashboard .account-balance-grid{margin-top:10px}
  #page-dashboard .account-balance-chip{padding:12px 13px}
  #page-dashboard .owner-summary-grid{grid-template-columns:1fr 1fr}
  #page-dashboard .future-section .section-title{align-items:center}
  #page-dashboard .future-section .section-title .link{font-size:12px}
  .repeat-grid{grid-template-columns:1fr}
}

/* v0.9.2 — simplified obligation planning form */
.treasury-money-fields-two{grid-template-columns:repeat(2,minmax(0,1fr))!important}
.obligation-fact-info{margin:10px 0 12px}
.obligation-fact-info strong{color:var(--ink,#0f172a)}
@media(max-width:720px){.treasury-money-fields-two{grid-template-columns:1fr 1fr!important}}

/* v0.9.3 — recurring creditors and supplier purchase plans */
.creditor-summary-grid{margin-bottom:14px}
.creditor-layout{display:grid;grid-template-columns:minmax(360px,.85fr) minmax(0,1.65fr);gap:14px;align-items:start}
.creditor-list{display:flex;flex-direction:column;gap:9px;margin-top:12px}
.creditor-row{width:100%;display:grid;grid-template-columns:minmax(170px,1.2fr) repeat(3,minmax(95px,.7fr));gap:10px;align-items:center;text-align:left;padding:13px 14px;border:1px solid var(--line);border-radius:16px;background:#fff;color:var(--text);cursor:pointer}
.creditor-row:hover,.creditor-row.active{border-color:#9db7ec;background:#f7faff;box-shadow:0 6px 18px rgba(32,72,164,.08)}
.creditor-row strong,.creditor-row b{display:block}.creditor-row small{display:block;color:var(--muted);font-size:11px;margin-top:3px}.creditor-row b{font-size:13px;white-space:nowrap}
.creditor-detail-empty{min-height:220px;display:grid;place-items:center;color:var(--muted);text-align:center}
.creditor-detail-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:14px}.creditor-detail-head h2{margin:0;font-size:24px}.creditor-detail-head p{margin:4px 0 0;color:var(--muted)}.creditor-detail-actions{display:flex;gap:8px;flex-wrap:wrap}
.creditor-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.creditor-kpis .treasury-kpi{padding:13px 14px;border-radius:16px;box-shadow:none}.creditor-kpis .treasury-kpi strong{font-size:20px}
.creditor-subsection{margin-top:20px;padding-top:18px;border-top:1px solid var(--line)}.creditor-subsection h3{margin:0;font-size:18px}
.supplier-purchases{display:flex;flex-direction:column;gap:8px;margin-top:10px}.supplier-purchase-row{width:100%;display:flex;justify-content:space-between;gap:14px;align-items:center;text-align:left;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:#fbfcff;color:var(--text);cursor:pointer}.supplier-purchase-row:hover{border-color:#b5c6e8}.supplier-purchase-row strong,.supplier-purchase-row small{display:block}.supplier-purchase-row small{color:var(--muted);font-size:11px;margin-top:4px}.supplier-purchase-row>div:last-child{text-align:right}
.creditor-projection-table td,.creditor-projection-table th{white-space:nowrap}.purchase-preview{margin:0 0 4px}.purchase-preview strong{display:block;margin-bottom:4px}.purchase-preview span{font-size:12px;color:var(--muted)}
.treasury-kpi.risk{background:#fff6f5;border-color:#f1d2cf}.treasury-kpi.risk strong{color:var(--red)}
@media(max-width:1280px){.creditor-layout{grid-template-columns:1fr}.creditor-kpis{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.creditor-row{grid-template-columns:1fr 1fr}.creditor-row>div:first-child{grid-column:1/-1}.creditor-kpis{grid-template-columns:1fr 1fr}.creditor-detail-head{flex-direction:column}.creditor-detail-actions{width:100%}.creditor-detail-actions>*{flex:1}.supplier-purchase-row{align-items:flex-start;flex-direction:column}.supplier-purchase-row>div:last-child{text-align:left}.creditor-subsection .table-shell{overflow:auto}.creditor-projection-table{min-width:1080px}}

/* v0.9.5 — individual supplier payment schedules */
.custom-payment-schedule{display:flex;flex-direction:column;gap:8px;padding:12px;border:1px solid var(--line);border-radius:14px;background:#f8faff;margin:2px 0 6px}
.custom-payment-head{display:flex;justify-content:space-between;gap:12px;align-items:center}.custom-payment-head span{font-size:11px;color:var(--muted)}
.custom-payment-row{display:grid;grid-template-columns:28px 1.15fr .8fr 1fr;gap:8px;align-items:end;padding:8px;border:1px solid #dfe6f2;border-radius:12px;background:white}
.custom-payment-row label{margin:0}.custom-payment-no{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#eaf1ff;color:#3156a4;font-weight:700;font-size:12px;align-self:center}
.custom-payment-money{padding-bottom:8px}.custom-payment-money small,.custom-payment-money b{display:block}.custom-payment-money small{font-size:10px;color:var(--muted);margin-bottom:3px}.custom-payment-money b{font-size:13px}
.custom-payment-row input[readonly]{background:#f2f5fa;color:#516078}
@media(max-width:760px){.custom-payment-head{align-items:flex-start;flex-direction:column}.custom-payment-row{grid-template-columns:28px 1fr 1fr}.custom-payment-money{grid-column:2/-1;padding-bottom:2px}}

/* visual creditor debt trajectory */
.creditor-chart-wrap{margin-top:12px;padding:14px 14px 8px;border:1px solid var(--line);border-radius:18px;background:linear-gradient(180deg,#fbfdff 0%,#fff 100%)}
.creditor-chart-legend{display:flex;gap:18px;flex-wrap:wrap;align-items:center;margin:0 0 4px;font-size:12px;color:var(--muted)}
.creditor-chart-legend span{display:inline-flex;align-items:center;gap:7px}.creditor-chart-legend i{display:inline-block;width:20px;height:4px;border-radius:999px}
.legend-plan{background:#3156a4}.legend-fact{background:#1b8a5a}.legend-pay{background:#d8e3f8}
.creditor-debt-chart{display:block;width:100%;height:auto;min-height:220px;overflow:visible}
.creditor-chart-grid{stroke:#e7ebf2;stroke-width:1}.creditor-chart-axis{fill:#7a879c;font-size:11px}.creditor-chart-plan-line{fill:none;stroke:#3156a4;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}.creditor-chart-plan-dot{fill:#3156a4}.creditor-chart-fact-line{fill:none;stroke:#1b8a5a;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}.creditor-chart-fact-dot{fill:#1b8a5a;stroke:#fff;stroke-width:2}.creditor-chart-payment{fill:#d8e3f8;opacity:.8}
.creditor-projection-compact{min-width:650px}.creditor-projection-compact th{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.creditor-projection-compact td{vertical-align:middle}.creditor-projection-compact td:first-child small{display:block;color:var(--muted);font-size:10px;margin-top:4px}
.projection-pair{display:grid;grid-template-columns:1fr 1fr;gap:8px}.projection-pair span{display:block;padding:7px 9px;border-radius:10px;background:#f7f9fd}.projection-pair small,.projection-pair b{display:block}.projection-pair small{font-size:10px;color:var(--muted);margin-bottom:2px}.projection-pair b{font-size:13px}.projection-pair.debt span:first-child{background:#eef3ff}.projection-pair.debt span:last-child{background:#eef9f3}
.creditor-week-cards{display:none;gap:10px;margin-top:12px}.creditor-week-card{border:1px solid var(--line);border-radius:16px;padding:13px;background:#fff}.creditor-week-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.creditor-week-head strong{font-size:14px}.creditor-week-head span{font-size:11px;color:var(--muted);text-align:right}.creditor-week-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px}.creditor-week-grid>div{padding:9px;border-radius:11px;background:#f7f9fd}.creditor-week-grid small,.creditor-week-grid b{display:block}.creditor-week-grid small{font-size:10px;color:var(--muted);margin-bottom:3px}.creditor-week-grid b{font-size:13px}.creditor-week-card details{margin-top:9px;border-top:1px solid #edf0f5;padding-top:8px}.creditor-week-card summary{cursor:pointer;color:#3156a4;font-size:12px;font-weight:700}.creditor-week-details{display:flex;flex-direction:column;gap:6px;margin-top:8px}.creditor-week-details>div{display:flex;justify-content:space-between;gap:10px;font-size:11px}.creditor-week-details span{color:var(--muted)}
@media(max-width:760px){.creditor-chart-wrap{padding:10px 8px 4px}.creditor-chart-legend{gap:10px;font-size:10px}.creditor-debt-chart{min-height:190px}.creditor-projection-desktop{display:none}.creditor-week-cards{display:grid}.creditor-debt-section .hint{font-size:12px}.creditor-week-head{flex-direction:column}.creditor-week-head span{text-align:left}.creditor-week-grid{grid-template-columns:1fr 1fr}.creditor-week-grid>div:last-child{grid-column:1/-1}.creditor-kpis{grid-template-columns:1fr 1fr}}
