.ui-icon {
  width: 24px;
  height: 24px;
  flex: 0 0 24px;
}
.shell-sidebar {
  width: var(--sidebar-width);
  padding: var(--gap-24) var(--gap-16);
}
.shell-sidebar .brand {
  margin: 0 var(--gap-8) var(--gap-32);
  font-size: var(--text-heading);
}
#nav {
  display: flex;
  flex-direction: column;
  gap: var(--gap-8);
}
#nav > button {
  display: flex;
  align-items: center;
  gap: var(--gap-12);
  min-height: 48px;
  font-size: var(--text-body);
  white-space: nowrap;
}
#nav > button.active {
  background: var(--accent-soft);
  color: var(--accent);
}
#nav .shell-add {
  background: var(--accent);
  color: var(--accent-ink);
}
main {
  margin-left: var(--sidebar-width);
  width: calc(100% - var(--sidebar-width));
  padding: var(--gap-24) var(--gap-32);
  max-width: 1400px;
}
.app-header {
  display: flex;
  align-items: center;
  gap: var(--gap-16);
  margin-bottom: var(--gap-24);
}
.app-header h1 {
  font-size: var(--text-heading);
  letter-spacing: -0.3px;
  margin: 0;
  flex: 1;
}
.app-header h1:focus {
  outline: none;
}
.app-header > .actions {
  display: flex;
  align-items: center;
  gap: var(--gap-8);
}
#app-header .month-control {
  order: -1;
  padding: 0;
  gap: 0;
}
.app-header .month-label {
  font-size: var(--text-small);
  font-weight: 500;
  letter-spacing: -0.2px;
}
.app-header .cloud-badge {
  width: 44px;
  min-height: 44px;
  max-width: 44px;
  padding: var(--gap-8);
  display: grid;
  place-items: center;
}
.app-header .cloud-badge .ui-icon {
  width: 22px;
  height: 22px;
}
.app-header[data-page="Ещё"] .month-control,
.app-header[data-page="Настройки"] .month-control,
.app-header[data-page="Личный кабинет"] .month-control {
  display: none;
}
.overview-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(280px, 1fr);
  gap: var(--gap-16);
}
.overview-balance {
  background: var(--hero);
  color: var(--hero-ink);
  border-radius: var(--radius-24);
  padding: var(--gap-24);
}
.balance-label {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: var(--text-body);
}
.balance-amount {
  font-size: clamp(var(--text-amount), 3vw, var(--text-hero));
  font-weight: 750;
  letter-spacing: -0.8px;
  font-variant-numeric: tabular-nums;
  margin: var(--gap-16) 0 var(--gap-20);
  overflow-wrap: anywhere;
}
.balance-month {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--gap-16);
  border-top: 1px solid var(--color-208);
  padding-top: var(--gap-16);
}
.balance-month small {
  color: var(--hero-ink);
  display: block;
  font-size: var(--text-small);
}
.balance-month b {
  display: block;
  font-size: var(--text-heading);
  margin-top: var(--gap-6);
  font-variant-numeric: tabular-nums;
}
.overview-plan {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-20);
  padding: var(--gap-20);
  display: grid;
  grid-template-columns: minmax(0, 1fr) 44px;
  align-items: center;
  gap: var(--gap-16);
}
.overview-plan small {
  font-size: var(--text-small);
}
.overview-plan b {
  display: block;
  font-size: var(--text-amount);
  line-height: 1.2;
  margin-top: var(--gap-8);
  font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere;
}
.overview-plan > button {
  min-height: 44px;
  padding: var(--gap-8);
}
.month-progress {
  grid-column: 1 / -1;
  display: flex;
  align-items: center;
  gap: var(--gap-16);
}
.month-progress small {
  flex-shrink: 0;
}
.progress-track {
  display: block;
  flex: 1;
  height: 5px;
  border-radius: var(--radius-4);
  background: var(--line);
  overflow: hidden;
}
.progress-track i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--success);
}
.plan-unplanned {
  grid-column: 1 / -1;
  font-size: var(--text-small);
  margin: 0;
}
.overview-attention {
  grid-column: 1 / -1;
  background: var(--warning-soft);
  color: var(--warning);
  border-radius: var(--radius-16);
  padding: var(--gap-12) var(--gap-16);
}
.overview-attention h2 {
  font-size: var(--text-small);
  display: flex;
  align-items: center;
  gap: var(--gap-8);
  margin: 0 0 var(--gap-4);
}
.overview-attention h2 .ui-icon {
  width: 18px;
  height: 18px;
  flex-basis: 18px;
}
.overview-alert {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--gap-12);
  width: 100%;
  min-height: 48px;
  padding: var(--gap-6) 0;
  background: var(--color-33);
  color: var(--warning);
  text-align: left;
}
.overview-alert span {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--gap-8);
  min-width: 0;
}
.overview-alert b {
  font-size: var(--text-body);
}
.overview-alert small {
  color: inherit;
  font-size: var(--text-small);
}
.overview-alert.over {
  color: var(--danger);
}
.overview-recent {
  grid-column: 1 / -1;
  min-width: 0;
}
.overview-section-title {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--gap-12);
}
.overview-section-title h2 {
  font-size: var(--text-label);
  margin: 0;
}
.overview-section-title button {
  min-height: 44px;
  min-width: 44px;
  background: var(--color-33);
  color: var(--success);
  padding: var(--gap-8);
}
.overview-operation {
  width: 100%;
  display: grid;
  grid-template-columns: 36px minmax(0, 1fr) auto;
  align-items: center;
  column-gap: var(--gap-12);
  min-height: 64px;
  padding: var(--gap-8) 0;
  border-radius: 0;
  background: var(--color-33);
  color: var(--ink);
  border-bottom: 1px solid var(--line);
  text-align: left;
}
.overview-operation:last-child {
  border-bottom: 0;
}
.overview-operation:hover {
  background: var(--surface);
}
.overview-operation-main {
  min-width: 0;
}
.overview-operation-main b {
  display: block;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: var(--text-body);
  font-weight: 650;
}
.overview-operation-main small {
  display: block;
  margin-top: var(--gap-4);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: var(--text-small);
}
.overview-operation strong {
  font-size: var(--text-label);
  font-weight: 650;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.overview-operation.income strong,
.overview-operation.refund strong {
  color: var(--success);
}
.overview-operation.transfer strong {
  color: var(--muted);
}
.category-symbol {
  display: grid;
  place-items: center;
  width: 36px;
  height: 36px;
  border-radius: var(--radius-12);
  background: var(--accent-soft);
  color: var(--accent);
}
.category-symbol .ui-icon {
  width: 20px;
  height: 20px;
  flex-basis: 20px;
}
.category-symbol.mint {
  background: var(--success-soft);
  color: var(--success);
}
.category-symbol.amber {
  background: var(--warning-soft);
  color: var(--warning);
}
.category-symbol.neutral {
  background: var(--raised);
  color: var(--muted);
}
.category-symbol.blue {
  background: var(--color-209);
  color: var(--color-210);
}
.category-symbol.rose {
  background: var(--color-211);
  color: var(--color-212);
}
:root[data-theme="dark"] .category-symbol.blue {
  background: var(--color-213);
  color: var(--color-214);
}
:root[data-theme="dark"] .category-symbol.rose {
  background: var(--danger-soft);
  color: var(--color-215);
}
.overview-import {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: 36px minmax(0, 1fr) auto;
  gap: var(--gap-12);
  align-items: center;
  background: var(--surface);
  border: 1px solid var(--line);
  padding: var(--gap-20);
  border-radius: var(--radius-20);
}
.overview-import h2 {
  font-size: var(--text-label);
  margin: 0;
}
.overview-import p {
  font-size: var(--text-small);
  margin: var(--gap-6) 0 0;
}
.overview-import > button {
  display: flex;
  align-items: center;
  gap: var(--gap-8);
  min-height: 44px;
}
.more-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--gap-12);
}
.more-link {
  display: flex;
  align-items: center;
  gap: var(--gap-16);
  padding: var(--gap-16);
  min-height: 80px;
  background: var(--surface);
  border: 1px solid var(--line);
  text-align: left;
}
.more-link > span {
  flex: 1;
  min-width: 0;
}
.more-link b,
.more-link small {
  display: block;
}
.more-link b {
  font-size: var(--text-label);
}
.more-link small {
  font-size: var(--text-small);
  margin-top: var(--gap-4);
}
.more-link > .ui-icon:first-child {
  color: var(--accent);
}
.more-link > .ui-icon:last-child {
  width: 20px;
  height: 20px;
  flex-basis: 20px;
  color: var(--muted);
}
.more-theme {
  min-height: 48px;
  margin-top: var(--gap-16);
  width: 100%;
}
.sheet-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--gap-16);
}
.sheet-heading h2 {
  margin: 0;
  font-size: var(--text-heading);
}
.sheet-heading > button {
  width: 44px;
  min-height: 44px;
  padding: var(--gap-8);
}
.add-option {
  display: flex;
  width: 100%;
  align-items: center;
  text-align: left;
  gap: var(--gap-16);
  min-height: 80px;
  margin-top: var(--gap-8);
  padding: var(--gap-16);
}
.add-option-icon {
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  color: var(--accent);
  background: var(--accent-soft);
  border-radius: var(--radius-12);
}
.add-option b,
.add-option small {
  display: block;
}
.add-option b {
  font-size: var(--text-label);
}
.add-option small {
  font-size: var(--text-small);
  margin-top: var(--gap-4);
}
.app-version {
  font-size: var(--text-small);
  color: var(--muted);
}
@media (max-width: 850px) {
  .shell-sidebar {
    position: fixed;
    inset: auto 12px 0;
    bottom: max(10px, env(safe-area-inset-bottom));
    width: auto;
    padding: var(--gap-6);
    border: 1px solid var(--line);
    border-radius: var(--radius-20);
    z-index: 10;
    box-shadow: 0 4px 24px var(--color-216);
  }
  .shell-sidebar .brand {
    display: none;
  }
  #nav {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 0;
    overflow: visible;
  }
  #nav > button {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: var(--gap-6);
    min-width: 0;
    min-height: 64px;
    padding: var(--gap-6) 0;
    border-radius: var(--radius-12);
    font-size: var(--text-small);
    text-align: center;
  }
  #nav > button.active {
    background: var(--color-33);
    color: var(--success);
  }
  #nav > .shell-add {
    background: var(--color-33);
    color: var(--muted);
  }
  #nav > .shell-add > .ui-icon {
    width: 44px;
    height: 36px;
    flex-basis: 36px;
    padding: var(--gap-4) var(--gap-8);
    border-radius: var(--radius-12);
    background: var(--accent);
    color: var(--accent-ink);
  }
  main {
    margin: 0;
    width: 100%;
    padding: max(var(--gap-16), env(safe-area-inset-top)) var(--gap-16)
      calc(var(--gap-64) + env(safe-area-inset-bottom));
  }
  .app-header {
    margin-bottom: var(--gap-16);
    gap: var(--gap-8);
  }
  .app-header h1 {
    font-size: var(--text-label);
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .app-header > .actions {
    display: flex;
    flex-wrap: nowrap;
    gap: var(--gap-6);
  }
  #app-header .month-control > button {
    min-height: 44px;
    padding: 0;
  }
  .app-header .theme-toggle {
    display: none;
  }
  .app-header #cloudbadge {
    grid-column: auto;
    max-width: 44px;
  }
  .overview-layout {
    grid-template-columns: 1fr;
    gap: var(--gap-12);
  }
  .overview-balance {
    padding: var(--gap-20);
    border-radius: var(--radius-20);
  }
  .balance-label {
    font-size: var(--text-small);
  }
  .balance-amount {
    font-size: clamp(var(--text-amount), 8vw, var(--text-hero));
    margin: var(--gap-12) 0 var(--gap-16);
  }
  .balance-month {
    gap: var(--gap-12);
    padding-top: var(--gap-12);
  }
  .balance-month b {
    font-size: var(--text-heading);
    overflow-wrap: anywhere;
  }
  .overview-plan {
    padding: var(--gap-16);
    gap: var(--gap-12);
  }
  .overview-plan b {
    font-size: var(--text-amount);
    margin-top: var(--gap-6);
  }
  .overview-attention {
    padding: var(--gap-8) var(--gap-16);
  }
  .overview-alert span {
    gap: var(--gap-4);
  }
  .overview-operation {
    min-height: 60px;
  }
  .overview-import {
    grid-template-columns: 36px minmax(0, 1fr);
    padding: var(--gap-16);
  }
  .overview-import > button {
    grid-column: 1 / -1;
    justify-content: space-between;
  }
  .more-grid {
    grid-template-columns: 1fr;
  }
  .more-link {
    padding: var(--gap-16);
  }
  dialog.add-sheet {
    position: fixed;
    inset: auto 0 0;
    max-width: none;
    width: 100%;
    margin: 0;
    padding: var(--gap-20) var(--gap-20) max(var(--gap-24), env(safe-area-inset-bottom));
    border-radius: var(--radius-24) var(--radius-24) 0 0;
  }
  body > .backup-status {
    margin: var(--gap-12) var(--gap-16);
  }
  .import-save {
    bottom: calc(96px + env(safe-area-inset-bottom));
  }
}
@media (max-width: 360px) {
  .app-header {
    gap: var(--gap-4);
  }
  .app-header .month-label {
    font-size: var(--text-small);
  }
  .overview-operation {
    column-gap: var(--gap-8);
  }
  .overview-operation strong {
    font-size: var(--text-body);
  }
}
/* Operation history: daily groups, a single compact row, amounts at the right. */
.operations-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--space-3);
}
.icon-button {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  min-height: 44px;
}
.icon-button.has-filters {
  color: var(--accent);
  background: var(--accent-soft);
}
.operation-filters {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr auto;
  gap: var(--space-3);
  padding: var(--space-4);
  background: var(--surface);
  border-radius: var(--radius-card);
}
.operation-filters[hidden] {
  display: none;
}
.operation-filters label {
  margin: 0;
}
.operation-filters > button {
  align-self: end;
}
.operation-day {
  margin-top: var(--space-4);
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  overflow: hidden;
}
.operation-day-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2);
  padding: var(--space-3) var(--space-4);
  background: var(--raised);
}
.operation-day-heading h2 {
  font-size: var(--text-small);
  margin: 0;
}
.operation-day-heading > span {
  color: var(--muted);
  font-size: var(--text-small);
  font-variant-numeric: tabular-nums;
}
.operation-entry {
  position: relative;
  border-top: 1px solid var(--line);
}
.operation-row {
  display: grid;
  grid-template-columns: 36px minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--space-3);
  width: 100%;
  min-height: 64px;
  padding: var(--space-2) var(--space-4);
  border: 0;
  border-radius: 0;
  background: var(--color-33);
  color: var(--ink);
  text-align: left;
}
.operation-copy {
  min-width: 0;
}
.operation-copy b,
.operation-copy small {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.operation-copy b {
  font-size: var(--text-body);
  font-weight: 600;
}
.operation-copy small {
  font-size: var(--text-small);
  margin-top: var(--gap-4);
}
.operation-row strong {
  white-space: nowrap;
  font-size: var(--text-body);
  font-weight: 650;
  font-variant-numeric: tabular-nums;
}
.operation-row.income strong,
.operation-row.refund strong {
  color: var(--success);
}
.operation-row.transfer strong {
  color: var(--muted);
}
.operation-entry.with-source .operation-row {
  padding-right: var(--gap-48);
}
.operation-source {
  position: absolute;
  right: 4px;
  top: 10px;
  width: 44px;
  height: 44px;
  padding: var(--gap-8);
  display: grid;
  place-items: center;
  border: 0;
  background: var(--color-33);
  color: var(--muted);
  border-radius: var(--radius-control);
}
.operation-source .ui-icon {
  width: 20px;
  height: 20px;
}
@media (max-width: 850px) {
  .operation-filters {
    grid-template-columns: 1fr 1fr;
  }
  .operation-filters label:first-child,
  .operation-filters > button {
    grid-column: 1/-1;
  }
  .operation-row {
    gap: var(--space-2);
    padding-inline: var(--space-3);
  }
  .operation-day-heading {
    padding-inline: var(--space-3);
    flex-wrap: wrap;
  }
}
.compact-budget {
  padding: var(--space-4);
}
.compact-budget-row {
  display: grid;
  grid-template-columns: 36px minmax(0, 1fr) 24px;
  gap: var(--space-2) var(--space-3);
  width: 100%;
  padding: var(--space-3) 0;
  background: var(--color-33);
  color: var(--ink);
  border: 0;
  border-bottom: 1px solid var(--line);
  border-radius: 0;
  text-align: left;
  align-items: center;
}
.compact-budget-copy {
  min-width: 0;
}
.compact-budget-copy b {
  display: block;
  font-size: var(--text-body);
  font-weight: 600;
}
.compact-budget-copy small {
  display: block;
  margin-top: var(--gap-4);
  font-size: var(--text-small);
}
.compact-budget-progress {
  grid-column: 2/-1;
  height: 5px;
  background: var(--line);
  border-radius: var(--radius-20);
  overflow: hidden;
}
.compact-budget-progress i {
  display: block;
  height: 100%;
  background: var(--accent);
}
.compact-budget-row.near .compact-budget-progress i {
  background: var(--warning);
}
.compact-budget-row.over .compact-budget-progress i {
  background: var(--danger);
}
.compact-budget-state {
  grid-column: 2/-1;
  font-size: var(--text-small);
  color: var(--muted);
}
.compact-budget-row.over .compact-budget-state {
  color: var(--danger);
}
.compact-budget-row.near .compact-budget-state {
  color: var(--warning);
}
.unused-categories summary {
  min-height: 44px;
  padding: var(--space-3) 0;
  color: var(--muted);
  cursor: pointer;
}
@media (max-width: 850px) {
  dialog.mobile-sheet {
    position: fixed;
    inset: auto 0 0;
    width: 100%;
    max-width: none;
    max-height: calc(100dvh - env(safe-area-inset-top) - 16px);
    margin: 0;
    padding: var(--space-5) var(--space-5) max(var(--gap-24), env(safe-area-inset-bottom));
    border-radius: var(--radius-sheet) var(--radius-sheet) 0 0;
    overflow-y: auto;
  }
}
.analytics-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-3);
}
.analytics-summary .card {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.analytics-summary b {
  font-size: var(--text-amount);
  font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere;
}
.analytics-summary span {
  font-size: var(--text-small);
  color: var(--muted);
}
.analytics-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: var(--space-3);
}
.analytics-heading h2 {
  margin: 0;
}
.range-buttons {
  display: flex;
  gap: var(--space-2);
}
.range-buttons button[aria-pressed="true"] {
  background: var(--accent-soft);
  color: var(--accent);
}
.chart-legend {
  display: flex;
  gap: var(--space-4);
  flex-wrap: wrap;
  margin-block: var(--space-4);
  font-size: var(--text-small);
  color: var(--muted);
}
.chart-legend span {
  display: flex;
  gap: var(--space-2);
  align-items: center;
}
.chart-legend i {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: var(--radius-4);
}
.chart-legend .income,
.chart-income {
  background: var(--success);
  fill: var(--success);
}
.chart-legend .expense,
.chart-expense {
  background: var(--accent);
  fill: var(--accent);
}
.chart-zero {
  stroke: var(--line);
}
.chart-scroll {
  overflow-x: auto;
  margin-top: var(--space-3);
}
.flow-chart {
  display: block;
  width: 100%;
  max-height: 320px;
}
.flow-chart text {
  fill: var(--muted);
  font-size: var(--text-body);
}
.chart-values summary {
  padding-block: var(--space-3);
  min-height: 44px;
  color: var(--muted);
  cursor: pointer;
}
.chart-values {
  overflow-x: auto;
}
.chart-values table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--text-small);
}
.chart-values caption {
  text-align: left;
  padding-bottom: var(--space-2);
  color: var(--muted);
}
.chart-values th,
.chart-values td {
  text-align: right;
  padding: var(--space-3);
  border-bottom: 1px solid var(--line);
  white-space: nowrap;
}
.chart-values th:first-child {
  text-align: left;
}
.analytics-category {
  display: grid;
  grid-template-columns: 36px minmax(0, 1fr) auto;
  gap: var(--space-3);
  width: 100%;
  padding: var(--space-4) 0;
  background: var(--color-33);
  border-radius: 0;
  border: 0;
  border-bottom: 1px solid var(--line);
  color: var(--ink);
  text-align: left;
}
.analytics-category span > b,
.analytics-category small {
  display: block;
  font-size: var(--text-small);
  margin-top: var(--gap-4);
}
.analytics-category span > b {
  font-size: var(--text-body);
  margin: 0;
}
.analytics-category strong {
  text-align: right;
  font-size: var(--text-body);
  white-space: nowrap;
}
.analytics-category-bar {
  grid-column: 2/-1;
  background: var(--line);
  height: 5px;
  border-radius: var(--radius-12);
  overflow: hidden;
}
.analytics-category-bar i {
  display: block;
  height: 100%;
  background: var(--accent);
}
@media (max-width: 850px) {
  .analytics-summary {
    grid-template-columns: 1fr 1fr;
  }
  .analytics-summary .card:last-child {
    grid-column: 1/-1;
  }
  .analytics-summary .card {
    padding: var(--space-4);
  }
  .analytics-summary b {
    font-size: var(--text-heading);
  }
  .analytics-category {
    gap: var(--space-2);
  }
}
.import-steps {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  list-style: none;
  gap: var(--space-2);
  padding: 0;
  margin: 0 0 var(--space-5);
}
.import-steps li {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  color: var(--muted);
  font-size: var(--text-small);
}
.import-steps li > span {
  display: grid;
  place-items: center;
  width: 28px;
  height: 28px;
  background: var(--raised);
  border-radius: var(--radius-round);
}
.import-steps li[aria-current] {
  color: var(--accent);
  font-weight: 600;
}
.import-steps li[aria-current] > span {
  background: var(--accent-soft);
}
.import-steps .complete {
  color: var(--success);
}
.import-list-heading h2 {
  font-size: var(--text-body);
}
.import-check {
  margin: 0;
  width: 44px;
  min-height: 44px;
  display: grid;
  place-items: center;
  cursor: pointer;
}
.import-check input,
.bank-category-choice input {
  width: 24px;
  height: 24px;
  margin: 0;
  accent-color: var(--accent);
}
.import-item {
  grid-template-columns: 44px 36px minmax(0, 1fr);
  gap: var(--space-2);
}
.import-item-main {
  min-height: 60px;
  padding: var(--space-2) 0;
}
.import-item.needs-attention {
  border-left: 3px solid var(--warning);
  padding-left: var(--space-2);
}
.import-inline-fields {
  grid-column: 2/-1;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-2);
  background: var(--warning-soft);
  padding: var(--space-3);
  border-radius: var(--radius-control);
}
.import-inline-fields label {
  font-size: var(--text-small);
  color: var(--warning);
  margin: 0;
}
.import-inline-fields input,
.import-inline-fields select {
  margin-top: var(--gap-6);
  min-height: 44px;
  font-size: var(--text-body);
}
.import-save {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  flex-wrap: wrap;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  padding: var(--space-4);
}
.import-save-help {
  font-size: var(--text-small);
  color: var(--warning);
  flex: 1;
}
.import-save-help > button {
  display: block;
  min-height: 44px;
  padding: var(--space-2) 0;
}
.import-save-help label {
  margin: 0;
}
.import-save .primary {
  min-height: 48px;
}
.import-complete {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-4);
  text-align: center;
  padding: var(--space-6);
}
#ocrprogress {
  width: 100%;
  height: 8px;
  accent-color: var(--accent);
}
.import-visual .ui-icon {
  width: 24px;
  height: 24px;
}
@media (max-width: 850px) {
  .import-save {
    position: sticky;
    bottom: calc(96px + env(safe-area-inset-bottom));
    margin-top: var(--space-4);
  }
  .import-save-help,
  .import-save .primary {
    width: 100%;
    flex-basis: 100%;
  }
  .import-inline-fields {
    grid-template-columns: 1fr;
  }
  .import-item {
    display: grid;
  }
}
.operation-sheet {
  width: min(580px, calc(100% - 32px));
}
.operation-types {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--space-2);
}
.operation-types button {
  min-height: 44px;
  padding: var(--space-2);
  font-size: var(--text-small);
}
.operation-types button[aria-pressed="true"],
.operation-date-chips button[aria-pressed="true"] {
  background: var(--accent-soft);
  color: var(--accent);
}
.operation-amount-label {
  margin: var(--space-5) 0;
}
.operation-amount-input {
  font-size: var(--text-hero);
  font-weight: 700;
  padding: var(--space-4);
  font-variant-numeric: tabular-nums;
}
.operation-category-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-2);
  max-height: 220px;
  overflow-y: auto;
  margin: var(--space-3) 0;
}
.operation-category-grid button {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-2);
  min-height: 80px;
  padding: var(--space-2) var(--gap-4);
  color: var(--ink);
  background: var(--color-33);
  border: 1px solid var(--line);
  font-size: var(--text-small);
}
.operation-category-grid button > span:last-child {
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.operation-category-grid button[aria-pressed="true"] {
  border-color: var(--accent);
  background: var(--accent-soft);
}
.operation-date-chips {
  display: flex;
  gap: var(--space-2);
  flex-wrap: wrap;
}
#operation-extra summary {
  min-height: 44px;
  padding-block: var(--space-3);
  color: var(--muted);
  cursor: pointer;
}
.operation-form-actions {
  position: sticky;
  bottom: 0;
  background: var(--surface);
  padding-block: var(--space-3);
  border-top: 1px solid var(--line);
  margin-top: var(--space-4);
}
.operation-form-actions > .primary {
  width: 100%;
  min-height: 48px;
  margin-bottom: var(--space-2);
}
@media (max-width: 850px) {
  .operation-types {
    grid-template-columns: repeat(2, 1fr);
  }
  .operation-category-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
/* Keep global control sizes without enlarging the prominent amount field. */
#form .operation-amount-input {
  font-size: var(--text-hero);
}
.shell-sidebar .brand {
  gap: var(--gap-8);
}
.category-tile {
  padding: var(--gap-16);
}
.category-tile-main {
  width: 100%;
  text-align: left;
  min-height: 88px;
}
.category-tile-main .import-visual {
  margin-bottom: var(--gap-8);
}
.category-tile b {
  font-size: var(--text-body);
}
.category-tile-total {
  font-size: var(--text-heading);
}
.category-tile-plan {
  width: 100%;
}
.grid > .card,
.profile-card {
  border: 1px solid var(--line);
}
.import-item-main {
  font-size: var(--text-body);
  background: transparent;
}
.import-item-main .import-name {
  font-size: var(--text-body);
}
.import-item-main .import-price {
  font-size: var(--text-body);
}
.import-upload .import-thumbs img {
  max-height: 96px;
  width: auto;
  object-fit: contain;
}
.import-save {
  box-shadow: none;
}
.chart-scroll {
  border-radius: var(--radius-control);
}
#app-header .month-control {
  height: auto;
}
.import-item {
  display: grid;
}
.import-item-main small {
  grid-column: 1/-1;
}
.import-filter,
.import-settings button {
  min-height: 44px;
}

/* Keep all desktop geometry tied to the menu width, including 851–1150px. */
#app-header .month-control {
  width: max-content;
  min-width: max-content;
  grid-template-columns: 44px max-content 44px;
}
#app-header .month-label {
  width: auto;
  min-width: max-content;
  padding-inline: var(--gap-8);
}
#app-header[data-page="Импорт"] .month-control {
  display: none;
}
.import-back {
  display: none;
}
#app-header[data-page="Импорт"] .import-back {
  display: inline-flex;
}
@media (max-width: 850px) {
  body:has(#app-header[data-import-step="review"]) .shell-sidebar,
  body:has(#app-header[data-import-step="done"]) .shell-sidebar {
    display: none;
  }
  body:has(#app-header[data-import-step="review"]) .import-save {
    bottom: env(safe-area-inset-bottom);
  }
  body:has(#app-header[data-import-step="review"]) main,
  body:has(#app-header[data-import-step="done"]) main {
    padding-bottom: var(--gap-24);
  }
}
.budget-storage-warning {
  background: var(--warning-soft);
  color: var(--warning);
}
