/* VASTELOR feedback. Surfaces, selection and momentary interaction are separate.
   This module paints existing controls; layout, gestures and money stay owned
   by their original modules. No per-row backdrop filters are introduced. */
:root {
  --v-feedback-hover: linear-gradient(180deg,rgb(255 255 255 / 30%),rgb(0 0 0 / 3%) 64%,rgb(0 0 0 / 5%));
  --v-feedback-press: linear-gradient(180deg,rgb(255 255 255 / 16%),rgb(0 0 0 / 7%));
  --v-feedback-edge: inset 0 1px 0 rgb(255 255 255 / 55%),inset 0 -1px 0 rgb(0 0 0 / 5%);
  --v-feedback-selection-fill: rgb(98 105 117 / 15%);
  --v-feedback-selection-sheen: linear-gradient(180deg,rgb(255 255 255 / 48%),rgb(255 255 255 / 10%));
  --v-feedback-nav-hover: linear-gradient(180deg,rgb(255 255 255 / 40%),rgb(255 255 255 / 8%)),rgb(98 105 117 / 10%);
}
:root[data-theme="light"] {
  --v-feedback-selection-fill: #f4f4f5;
  --v-feedback-selection-sheen: none;
  --v-choice-surface: #f4f4f5;
  --v-feedback-nav-hover: linear-gradient(#f4f4f5,#f4f4f5);
}
:root[data-theme="dark"] {
  --v-feedback-hover: linear-gradient(180deg,rgb(255 255 255 / 9%),rgb(255 255 255 / 7%));
  --v-feedback-press: linear-gradient(180deg,rgb(255 255 255 / 14%),rgb(255 255 255 / 12%));
  --v-feedback-edge: inset 0 1px 0 rgb(255 255 255 / 10%),inset 0 -1px 0 rgb(0 0 0 / 12%);
  --v-feedback-selection-fill: rgb(0 0 0 / 62%);
  --v-feedback-selection-sheen: linear-gradient(180deg,rgb(255 255 255 / 3%),transparent 52%,rgb(255 255 255 / 2%));
  --v-feedback-nav-hover: linear-gradient(180deg,rgb(255 255 255 / 6%),transparent 52%),rgb(0 0 0 / 34%);
}

/* Flat rows use a calm grey response; glass keeps its separate optical layer.
   The light glass response above is unchanged. These are measured-reference
   approximations, not extracted original theme tokens. */
:root[data-theme="light"] :is(.v-shell-page,.v-lab-page) :is(
  .v-list-row,.v-operation-item__main,.v-category-stat-row,.v-saved-backup-row,.v-settings-action,
  .v-category-option,.v-currency-option,.v-popover__option,
  .v-form-choice,.v-filter-choice,.v-date-choice,
  :where(.v-settings-menu,.v-language-list,.v-theme-choices) button,
  :where(.v-help-faq,.v-support-faq,.v-backup-files) summary
) {
  --v-feedback-hover: linear-gradient(#f4f4f5,#f4f4f5);
  --v-feedback-press: linear-gradient(#f4f4f5,#f4f4f5);
  --v-feedback-edge: none;
}
:root[data-theme="dark"] :is(.v-shell-page,.v-lab-page) :is(
  .v-list-row,.v-operation-item__main,.v-category-stat-row,.v-saved-backup-row,.v-settings-action,
  .v-category-option,.v-currency-option,.v-popover__option,
  :where(.v-settings-menu,.v-language-list,.v-theme-choices) button,
  :where(.v-help-faq,.v-support-faq,.v-backup-files) summary
) {
  --v-feedback-hover: linear-gradient(#2c2c2e,#2c2c2e);
  --v-feedback-press: linear-gradient(#3a3a3c,#3a3a3c);
}

/* One sheen per glass container. Toolbar buttons live inside that container. */
:root[data-theme] :is(.v-shell-page,.v-lab-page) :is(
  .v-app-topbar__actions,.v-operations-tools,.v-popover,
  .v-balance-period,.v-balance-card__period,.v-statistics-period,
  .v-glass-control,.v-glass-back,.v-statistics-back,.v-goal-card__deadline,
  .v-operation-currency
) {
  background: var(--v-glass-sheen),var(--v-nav-glass);
  box-shadow: var(--v-choice-shadow);
}
:root[data-theme] :is(.v-shell-page,.v-lab-page) .v-operations-tools .v-glass-control {
  background: transparent;
  box-shadow: none;
}
:root[data-theme] .v-shell-page .v-bottom-nav::before {
  background: var(--v-glass-sheen),var(--v-nav-glass);
}
:root[data-theme] .v-shell-page .v-glass-picker > .v-breakdown-dialog__surface {
  background: var(--v-glass-sheen),var(--v-nav-glass);
}

/* The home card controls use the light page grey requested by the user.
   Other glass containers and every dark surface retain their own material. */
:root[data-theme="light"] .v-shell-page :where(.v-overview) :is(
  .v-balance-period,.v-balance-card__period,.v-goal-card__deadline,
  :where(.v-balance-history-card) .v-glass-control
) {
  background-color: var(--v-canvas);
  background-image: none;
}

/* All forms of a choice share this state, including the mobile summary tabs. */
:root[data-theme] :is(.v-shell-page,.v-lab-page) :is(
  .v-category-option,.v-currency-option,.v-saved-backup-row,
  .v-glass-control,.v-glass-back,.v-statistics-back,.v-goal-card__deadline,
  :where(.v-language-list,.v-theme-choices,.v-goal-visual-grid,.v-range-quick,
    .v-range-custom,.v-date-grid,.v-date-month,.v-date-actions,.v-period-menu) button
) {
  transition: background-color var(--v-motion-fast) ease,
    box-shadow var(--v-motion-fast) ease,transform var(--v-motion-standard) var(--v-ease-out);
}
:root[data-theme] :is(.v-shell-page,.v-lab-page) :is(
  .v-category-option,.v-currency-option,
  :where(.v-segmented,.v-breakdown-tabs,.v-period-tabs,.v-module-tabs,
    .v-language-list,.v-theme-choices,.v-goal-inline__choices,.v-range-quick) button
)[aria-pressed="true"],
:root[data-theme] :is(.v-shell-page,.v-lab-page) :is(
  .v-popover__option.is-active,.v-segmented button.is-active,
  .v-goal-visual-grid button.is-selected,
  .v-period-menu button[aria-checked="true"],
  .v-date-grid button[aria-selected="true"]
) {
  background-color: var(--v-feedback-selection-fill);
  background-image: var(--v-feedback-selection-sheen);
  border-color: var(--v-choice-edge);
  box-shadow: var(--v-choice-shadow);
  color: var(--v-navigation-ink);
}
:root[data-theme] :is(.v-shell-page,.v-lab-page) :is(
  .v-balance-options-trigger,.v-balance-period,.v-balance-card__period,
  .v-statistics-period,.v-glass-control,.v-form-choice,.v-filter-choice,
  .v-date-choice,.v-goal-card__deadline,.v-operation-currency,.v-balance-card__currency,
  .v-goal-visual-selected,.v-goal-inline__hide
)[aria-expanded="true"],
:root[data-theme] :is(.v-shell-page,.v-lab-page) :where(.v-help-faq,.v-support-faq,.v-backup-files) details[open] > summary,
:root[data-theme] :is(.v-shell-page,.v-lab-page) details.v-backup-files[open] > summary {
  background-color: var(--v-feedback-selection-fill);
  background-image: var(--v-feedback-selection-sheen);
  box-shadow: var(--v-choice-shadow);
}

/* Paint the content capsule, keeping the full rail item as a touch target.
   The phone's existing moving dock capsule is independently owned. */
:root[data-theme="light"] .v-shell-page :is(.v-side-rail,.v-bottom-nav) {
  --v-choice-shadow: inset 0 1px 0 rgb(255 255 255 / 30%);
  --v-nav-selection-edge: rgb(255 255 255 / 30%);
}
:root[data-theme] .v-shell-page .v-side-rail .v-nav-item {
  background: transparent;
  box-shadow: none;
}
:root[data-theme] .v-shell-page .v-side-rail .v-nav-item.is-active .v-nav-content {
  background: var(--v-choice-surface);
  box-shadow: var(--v-choice-shadow);
}
:root[data-theme="dark"] .v-shell-page .v-side-rail .v-nav-item {
  --v-feedback-nav-hover: linear-gradient(180deg,rgb(255 255 255 / 6%),transparent 52%),#151517;
}
:root[data-theme="dark"] .v-shell-page .v-side-rail .v-nav-item.is-active .v-nav-content {
  background: linear-gradient(180deg,rgb(255 255 255 / 7%),transparent 52%,rgb(255 255 255 / 2%)),#171719;
  box-shadow: inset 0 1px 0 rgb(255 255 255 / 10%),inset 0 -1px 0 rgb(0 0 0 / 20%);
}
:root[data-theme] .v-shell-page .v-nav-glyph .v-icon :is(path,rect) {
  fill: currentColor;
  fill-opacity: 1;
  stroke: none;
}

/* Hover requires a real fine pointer. Tap feedback is supplied by :active. */
@media (hover:hover) and (pointer:fine) {
  :root[data-theme] :is(.v-shell-page,.v-lab-page) :is(
    .v-list-row,.v-operation-item__main,.v-category-stat-row,.v-saved-backup-row,.v-settings-action,
    :where(.v-settings-menu) button,
    :where(.v-help-faq,.v-support-faq,.v-backup-files) summary,
    .v-category-option,.v-currency-option,.v-popover__option,
    :where(.v-segmented,.v-breakdown-tabs,.v-period-tabs,.v-module-tabs,
      .v-language-list,.v-theme-choices,.v-goal-inline__choices,.v-range-quick,
      .v-range-custom,.v-period-menu,.v-date-grid,.v-date-month,.v-date-actions,
      .v-goal-visual-grid,.v-goal-actions-list,.v-balance-options-list) button,
    .v-form-choice,.v-filter-choice,.v-date-choice,.v-goal-visual-selected,
    .v-operation-currency,.v-balance-card__currency,.v-goal-card__deadline,.v-goal-inline__hide,
    .v-balance-period,.v-balance-card__period,.v-statistics-period,
    .v-balance-options-trigger,.v-glass-control,.v-glass-back,.v-statistics-back,
    .v-icon-button,.v-statistics-link,.v-button--quiet,.v-button--secondary
  ):where(:not(:disabled):not([aria-disabled="true"]):not([data-opening-focus="true"])):hover {
    /* The opaque card colour is deliberately not replaced. */
    background-image: var(--v-feedback-hover);
    box-shadow: var(--v-feedback-edge);
  }
  :root[data-theme] :is(.v-shell-page,.v-lab-page) :is(
    .v-category-option,.v-currency-option,
    :where(.v-segmented,.v-breakdown-tabs,.v-period-tabs,.v-module-tabs,
      .v-language-list,.v-theme-choices,.v-goal-inline__choices,.v-range-quick) button
  )[aria-pressed="true"]:where(:not(:disabled):not([aria-disabled="true"])):hover,
  :root[data-theme] :is(.v-shell-page,.v-lab-page) :is(
    .v-popover__option.is-active,.v-segmented button.is-active,
    .v-goal-visual-grid button.is-selected,
    .v-period-menu button[aria-checked="true"],
    .v-date-grid button[aria-selected="true"]
  ):where(:not(:disabled):not([aria-disabled="true"])):hover,
  :root[data-theme] :is(.v-shell-page,.v-lab-page) :is(
    .v-balance-options-trigger,.v-balance-period,.v-balance-card__period,
    .v-statistics-period,.v-glass-control,.v-form-choice,.v-filter-choice,
    .v-date-choice,.v-goal-card__deadline,.v-operation-currency,.v-balance-card__currency,
    .v-goal-visual-selected,.v-goal-inline__hide
  )[aria-expanded="true"]:where(:not(:disabled)):hover,
  :root[data-theme] :is(.v-shell-page,.v-lab-page) :where(.v-help-faq,.v-support-faq) details[open] > summary:hover,
  :root[data-theme] :is(.v-shell-page,.v-lab-page) details.v-backup-files[open] > summary:hover {
    background-image: var(--v-feedback-hover),var(--v-feedback-selection-sheen);
    box-shadow: var(--v-choice-shadow);
  }
  .v-shell-page .v-bottom-nav .v-nav-item:not(.is-active):where(:not([aria-disabled="true"])):hover {
    background: var(--v-feedback-nav-hover);
    box-shadow: var(--v-feedback-edge);
  }
  :root[data-theme] .v-shell-page .v-side-rail .v-nav-item:not(.is-active):where(:not([aria-disabled="true"])):hover .v-nav-content {
    background: var(--v-feedback-nav-hover);
    box-shadow: var(--v-feedback-edge);
  }
}

:root[data-theme] :is(.v-shell-page,.v-lab-page) :is(
  .v-list-row,.v-operation-item__main,.v-category-stat-row,.v-saved-backup-row,.v-settings-action,
  :where(.v-settings-menu) button,
  :where(.v-help-faq,.v-support-faq,.v-backup-files) summary,
  .v-category-option,.v-currency-option,.v-popover__option,
  :where(.v-segmented,.v-breakdown-tabs,.v-period-tabs,.v-module-tabs,
    .v-language-list,.v-theme-choices,.v-goal-inline__choices,.v-range-quick,
    .v-range-custom,.v-period-menu,.v-date-grid,.v-date-month,.v-date-actions,
    .v-goal-visual-grid,.v-goal-actions-list,.v-balance-options-list) button,
  .v-form-choice,.v-filter-choice,.v-date-choice,.v-goal-visual-selected,
  .v-operation-currency,.v-balance-card__currency,.v-goal-card__deadline,.v-goal-inline__hide,
  .v-balance-period,.v-balance-card__period,.v-statistics-period,
  .v-balance-options-trigger,.v-glass-control,.v-glass-back,.v-statistics-back,
  .v-icon-button,.v-statistics-link,.v-button--quiet,.v-button--secondary
):where(:not(:disabled):not([aria-disabled="true"])):active {
  background-image: var(--v-feedback-press);
  box-shadow: var(--v-feedback-edge);
}
:root[data-theme] :is(.v-shell-page,.v-lab-page) :is(
  .v-category-option,.v-currency-option,
  :where(.v-segmented,.v-breakdown-tabs,.v-period-tabs,.v-module-tabs,
    .v-language-list,.v-theme-choices,.v-goal-inline__choices,.v-range-quick) button
)[aria-pressed="true"]:where(:not(:disabled):not([aria-disabled="true"])):active,
:root[data-theme] :is(.v-shell-page,.v-lab-page) :is(
  .v-popover__option.is-active,.v-segmented button.is-active,
  .v-goal-visual-grid button.is-selected,
  .v-period-menu button[aria-checked="true"],
  .v-date-grid button[aria-selected="true"]
):where(:not(:disabled):not([aria-disabled="true"])):active,
:root[data-theme] :is(.v-shell-page,.v-lab-page) :is(
  .v-balance-options-trigger,.v-balance-period,.v-balance-card__period,
  .v-statistics-period,.v-glass-control,.v-form-choice,.v-filter-choice,
  .v-date-choice,.v-goal-card__deadline,.v-operation-currency,.v-balance-card__currency,
  .v-goal-visual-selected,.v-goal-inline__hide
)[aria-expanded="true"]:where(:not(:disabled)):active,
:root[data-theme] :is(.v-shell-page,.v-lab-page) :where(.v-help-faq,.v-support-faq) details[open] > summary:active,
:root[data-theme] :is(.v-shell-page,.v-lab-page) details.v-backup-files[open] > summary:active {
  background-image: var(--v-feedback-press),var(--v-feedback-selection-sheen);
  box-shadow: var(--v-choice-shadow);
}
:root[data-theme] .v-shell-page .v-bottom-nav .v-nav-item:not(.is-active):where(:not([aria-disabled="true"])):active {
  background: var(--v-feedback-nav-hover);
  box-shadow: var(--v-feedback-edge);
}
:root[data-theme] .v-shell-page .v-side-rail .v-nav-item:not(.is-active):where(:not([aria-disabled="true"])):active .v-nav-content {
  background: var(--v-feedback-nav-hover);
  box-shadow: var(--v-feedback-edge);
}
:root[data-theme] :is(.v-shell-page,.v-lab-page) .v-date-grid button.is-today:not([aria-selected="true"]) {
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 4px;
}

/* Keep automatic close-button focus quiet. Keyboard focus remains independent.
   Save, coloured money actions, trash and noninteractive statistics are excluded. */
:root[data-theme][data-focus-mode="keyboard"] :is(.v-shell-page,.v-lab-page) :is(
  .v-icon-button,[data-date-close],[data-range-close],[data-range-from],[data-range-to]
):where(:not([data-opening-focus="true"])):focus-visible {
  box-shadow: inset 0 -2px 0 var(--v-text-3),var(--v-feedback-edge);
}
:root[data-theme] .v-shell-page [data-opening-focus="true"] {
  background-image: none;
  box-shadow: none;
}
@media (prefers-reduced-motion:reduce) {
  :root[data-theme] :is(.v-shell-page,.v-lab-page) :is(
    .v-category-option,.v-currency-option,.v-saved-backup-row,
    .v-glass-control,.v-glass-back,.v-statistics-back,.v-goal-card__deadline,
    :where(.v-language-list,.v-theme-choices,.v-goal-visual-grid,.v-range-quick,
      .v-range-custom,.v-date-grid,.v-date-month,.v-date-actions,.v-period-menu) button
  ) { transition: none; }
}
