/* 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-light: #ececee;
  --v-feedback-hover: linear-gradient(var(--v-feedback-light),var(--v-feedback-light));
  --v-feedback-press: linear-gradient(var(--v-feedback-light),var(--v-feedback-light));
  --v-feedback-selection-fill: var(--v-feedback-light);
  --v-feedback-selection-sheen: none;
  --v-choice-surface: var(--v-feedback-light);
  --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,
  .v-cat-choice,.v-cat-glyph,.v-cat-color,.v-cat-more,.v-cat-settings-edit,.v-cat-tabs button,
  :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(var(--v-feedback-light),var(--v-feedback-light));
  --v-feedback-press: linear-gradient(var(--v-feedback-light),var(--v-feedback-light));
  --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,
  .v-cat-choice,.v-cat-glyph,.v-cat-color,.v-cat-more,.v-cat-settings-edit,.v-cat-tabs button,
  :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-glass-picker:not(.v-custom-color-panel) > .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; }
}

/* Categories reuse operation-row feedback; their glass surfaces are grey.
   Swatches and symbols keep a small optical target inside the full hit area. */
:root[data-theme] .v-shell-page :is(.v-cat-preview) {
  background:var(--v-glass-sheen),var(--v-nav-glass); box-shadow:var(--v-choice-shadow);
}
:root[data-theme] .v-shell-page .v-cat-list { background-color:transparent; }
:root[data-theme] .v-shell-page :is(.v-cat-choice,.v-cat-add,.v-cat-glyph,.v-cat-color,.v-cat-more,.v-cat-settings-edit,.v-cat-tabs button) {
  transition:background-color var(--v-motion-fast) ease,box-shadow var(--v-motion-fast) ease;
}
:root[data-theme] .v-shell-page :is(.v-cat-choice,.v-cat-tabs button)[aria-pressed="true"] {
  background-color:transparent; background-image:var(--v-feedback-hover);
  box-shadow:var(--v-feedback-edge);
}
:root[data-theme] .v-shell-page :is(.v-cat-glyph,.v-cat-color) {
  background:transparent; box-shadow:none;
}
:root[data-theme] .v-shell-page :is(.v-cat-glyph,.v-cat-color)::before {
  transition:background-color var(--v-motion-fast) ease,box-shadow var(--v-motion-fast) ease;
}
:root[data-theme] .v-shell-page :is(.v-cat-glyph,.v-cat-color)[aria-pressed="true"]::before {
  background-image:var(--v-feedback-hover); box-shadow:var(--v-choice-shadow);
  outline:1px solid var(--v-text-3); outline-offset:0;
}
@media (hover:hover) {
  :root[data-theme] .v-shell-page :is(.v-cat-choice,.v-cat-add,.v-cat-more,.v-cat-settings-edit,.v-cat-tabs button):hover {
    box-shadow:var(--v-feedback-edge); background-image:var(--v-feedback-hover);
  }
  :root[data-theme] .v-shell-page :is(.v-cat-glyph,.v-cat-color):hover::before { background-image:var(--v-feedback-hover); }
}
:root[data-theme] .v-shell-page .v-choice-swipe > .v-swipe-main {
  transition:transform 180ms var(--v-ease-out),background-color var(--v-motion-fast) ease;
}
:root[data-theme] .v-shell-page .v-choice-swipe.is-swiping > .v-swipe-main { transition:none; }
@media(prefers-reduced-motion:reduce) {
  :root[data-theme] .v-shell-page .v-choice-swipe > .v-swipe-main { transition:none; }
}
:root[data-theme] .v-shell-page :is(.v-cat-choice,.v-cat-add,.v-cat-more,.v-cat-settings-edit,.v-cat-tabs button):active {
  background-image:var(--v-feedback-press);
}
:root[data-theme] .v-shell-page :is(.v-cat-glyph,.v-cat-color):active::before { background-image:var(--v-feedback-press); }
:root[data-theme] .v-shell-page :is(.v-cat-choice,.v-cat-add,.v-cat-more,.v-cat-settings-edit,.v-cat-tabs button):focus-visible {
  outline:2px solid var(--v-text-2); outline-offset:-2px;
}
:root[data-theme] .v-shell-page :is(.v-cat-glyph,.v-cat-color):focus-visible { outline:none; }
:root[data-theme] .v-shell-page :is(.v-cat-glyph,.v-cat-color):focus-visible::before {
  outline:2px solid var(--v-text-2); outline-offset:1px;
}

/* The symbol browser uses neutral ink, not the white ink of coloured tiles. */
:root[data-theme] .v-shell-page .v-cat-glyph .v-cat-tile {
  color:var(--v-text-1); background:transparent; border:0; box-shadow:none;
}
:root[data-theme] .v-shell-page .v-cat-glyph .v-cat-tile .v-icon { color:var(--v-text-1); }
:root[data-theme] .v-shell-page .v-cat-toggle { color:var(--v-text-2); }
:root[data-theme] .v-shell-page .v-cat-toggle[data-cat-visibility="hidden"] { color:var(--v-text-3); }
:root[data-theme] .v-shell-page .v-cat-toggle:active { background-image:var(--v-feedback-press); }
:root[data-theme] .v-shell-page .v-cat-toggle:focus-visible { outline:2px solid var(--v-text-2); outline-offset:-2px; }
:root[data-theme] .v-shell-page [data-cat-settings-hidden][aria-pressed="true"] {
  background:var(--v-feedback-hover),var(--v-nav-glass); box-shadow:var(--v-choice-shadow);
}
@media (hover:hover) and (pointer:fine) {
  :root[data-theme] .v-shell-page .v-cat-toggle:hover { background-image:var(--v-feedback-hover); }
}

:root[data-theme] .v-shell-page :is(.v-cat-add-round,.v-app-topbar__actions .v-icon-button) {
  transition:transform 180ms cubic-bezier(.2,.8,.26,1),background-color var(--v-motion-fast) ease,box-shadow var(--v-motion-fast) ease;
}

/* Bottom dock presentation now belongs to vastelor-navigation.css. */
:root[data-theme] .v-shell-page :is(.v-app-topbar__actions,.v-operations-tools) .v-icon-button .v-icon,
:root[data-theme] .v-shell-page :is(.v-glass-back,.v-statistics-back,.v-cat-add-round) .v-icon {
  transition:transform 170ms cubic-bezier(.2,.8,.26,1),opacity 130ms ease;
}
:root[data-theme] .v-shell-page :is(.v-app-topbar__actions,.v-operations-tools) .v-icon-button:active .v-icon,
:root[data-theme] .v-shell-page :is(.v-glass-back,.v-statistics-back,.v-cat-add-round):active .v-icon {
  transform:scale(.94); opacity:.65;
}
@media (prefers-reduced-motion:reduce) {
  :root[data-theme] .v-shell-page .v-bottom-nav .v-nav-item { transition:none; }
  .v-shell-page .v-bottom-nav .v-nav-backdrop-edges { display:none; }
  :root[data-theme] .v-shell-page :is(.v-app-topbar__actions,.v-operations-tools) .v-icon-button .v-icon,
  :root[data-theme] .v-shell-page :is(.v-glass-back,.v-statistics-back,.v-cat-add-round) .v-icon { transition:none; transform:none; }
}
:root[data-theme] .v-shell-page :is(.v-cat-add-round,.v-app-topbar__actions .v-icon-button):active { transform:scale(.96); }
@media (prefers-reduced-motion:reduce) {
  :root[data-theme] .v-shell-page .v-bottom-nav::after { transition:none; transform:none; }
  :root[data-theme] .v-shell-page .v-bottom-nav:has(.v-nav-item:not([aria-disabled="true"]):active)::after { transform:none; }
  :root[data-theme] .v-shell-page :is(.v-cat-add-round,.v-app-topbar__actions .v-icon-button) { transition:none; }
  :root[data-theme] .v-shell-page :is(.v-cat-add-round,.v-app-topbar__actions .v-icon-button):active { transform:none; }
}

/* Colour controls retain their own hue; only focus/selection use shared feedback. */
:root[data-theme] .v-shell-page .v-cat-brightness:focus-visible { outline:2px solid var(--v-text-2); outline-offset:4px; }
:root[data-theme] .v-shell-page .v-cat-wheel { outline:none; }
:root[data-theme]:not([data-focus-mode="pointer"]) .v-shell-page .v-cat-wheel:focus-visible .v-cat-wheel-thumb { outline:2px solid var(--v-positive);outline-offset:2px; }
:root[data-theme] .v-shell-page .v-cat-field input.v-cat-brightness { background-color:transparent; background-image:none; box-shadow:none; }
:root[data-theme] .v-shell-page .v-cat-hex[aria-invalid="true"] { outline:1px solid var(--v-danger); outline-offset:-1px; }
:root[data-theme] .v-shell-page .v-cat-editor .v-dialog-save,
:root[data-theme] .v-shell-page .v-cat-editor .v-dialog-save:is(:hover,:active,:focus) { background:transparent; color:var(--v-positive); }

/* Shared choice feedback: selected stays visible during hover/press. */
.v-choice-row[aria-pressed="true"] { background:color-mix(in srgb,var(--v-positive) 9%,transparent); }
.v-choice-row:focus-visible,.v-appearance-glyph:focus-visible,.v-appearance-color:focus-visible,.v-cat-property:focus-visible,.v-choice-whole:focus-visible { outline:2px solid var(--v-positive);outline-offset:-3px; }
@media(hover:hover) { .v-choice-row:hover,.v-appearance-glyph:hover,.v-appearance-color:not(:disabled):hover { box-shadow:inset 0 0 0 999px color-mix(in srgb,var(--v-text-1) 4%,transparent); } }
.v-choice-row:active,.v-appearance-glyph:active,.v-appearance-color:not(:disabled):active { box-shadow:inset 0 0 0 999px color-mix(in srgb,var(--v-text-1) 8%,transparent); }

/* Names belong to their single outer card, without a second glass field. */
:root[data-theme] .v-shell-page .v-cat-card input:is([type="text"],[type="search"]) {
 appearance:none;-webkit-appearance:none;border:0;background:transparent;background-image:none;box-shadow:none;
 border-radius:0;margin:5px 0 0;padding:4px 0;color:var(--v-text-1);font:inherit;width:100%;min-width:0;
}
:root[data-theme] .v-shell-page .v-cat-card input:is([type="text"],[type="search"]):focus-visible { outline:0;box-shadow:inset 0 -2px 0 var(--v-focus); }

/* The account action keeps its danger accent over the shared neutral glass. */
:root[data-theme] .v-shell-page .v-account-signout { --v-navigation-ink:var(--v-danger);color:var(--v-danger); }
:root[data-theme] .v-shell-page .v-account-signout .v-icon { color:inherit; }

/* One reference grey for ordinary light feedback, including glass controls.
   Navigation and the income/expense segmented surfaces keep their material. */
/* Shared toolbar children and older glass hosts also need a feedback surface.
   Keep their existing glass rim and the search/filter status dot. */
:root[data-theme="light"] .v-shell-page :is(
  button.v-navigation-material,.v-navigation-material > button,
  .v-app-topbar__actions .v-icon-button,.v-operations-tools .v-glass-control,
  .v-glass-control,.v-glass-back,.v-statistics-back,.v-window-dismiss,.v-window-commit,
  .v-balance-options-trigger,.v-balance-card__currency,.v-operation-currency,
  .v-goal-inline__hide,.v-choice-row,.v-choice-whole,.v-cat-property
):not(:where(.v-bottom-nav *,.v-side-rail *,
  .v-navigation-material--segmented,.v-navigation-material--segmented *,
  .v-action-pair *,.v-button--income,.v-button--expense,[data-money-type]
)):where(:not(:disabled):not([aria-disabled="true"])):is(:active,[aria-expanded="true"]) {
  background-image:var(--v-feedback-press);
  box-shadow:var(--v-feedback-edge);
}
@media(hover:hover) and (pointer:fine) {
  :root[data-theme="light"] .v-shell-page :is(
    button.v-navigation-material,.v-navigation-material > button,
    .v-app-topbar__actions .v-icon-button,.v-operations-tools .v-glass-control,
    .v-glass-control,.v-glass-back,.v-statistics-back,.v-window-dismiss,.v-window-commit,
    .v-balance-options-trigger,.v-balance-card__currency,.v-operation-currency,
    .v-goal-inline__hide,.v-choice-row,.v-choice-whole,.v-cat-property
  ):not(:where(.v-bottom-nav *,.v-side-rail *,
    .v-navigation-material--segmented,.v-navigation-material--segmented *,
    .v-action-pair *,.v-button--income,.v-button--expense,[data-money-type]
  )):where(:not(:disabled):not([aria-disabled="true"]):not([data-opening-focus="true"])):hover {
    background-image:var(--v-feedback-hover);
    box-shadow:var(--v-feedback-edge);
  }
}
:root[data-theme="light"] .v-shell-page :is(.v-bottom-nav,.v-side-rail,.v-navigation-material--segmented,.v-navigation-material--segmented button) {
  --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-selection-fill:#f4f4f5;--v-choice-surface:#f4f4f5;
}
:root[data-theme="light"] .v-shell-page .v-navigation-material--control { --v-navigation-selection:var(--v-feedback-light); }

:root[data-theme] .v-shell-page :is(.v-operation-item__main,.v-choice-row):active::before,
:root[data-theme] .v-shell-page .v-operation-item:has(> .v-operation-item__main:active) + .v-operation-item > .v-operation-item__main::before,
:root[data-theme] .v-shell-page .v-choice-swipe:has(> .v-choice-row:active) + .v-choice-swipe > .v-choice-row::before,
:root[data-theme] .v-shell-page .v-choice-row:active + .v-choice-row::before { opacity:0; }
:root[data-theme] .v-shell-page :is(.v-list-row,.v-settings-menu button):active,
:root[data-theme] .v-shell-page .v-list--overview > li:has(+ li > .v-list-row:active) > .v-list-row,
:root[data-theme] .v-shell-page .v-settings-menu button:has(+ button:active) { border-bottom-color:transparent; }

@media(hover:hover) and (pointer:fine) {

:root[data-theme] .v-shell-page :is(.v-operation-item__main,.v-choice-row):hover::before,
:root[data-theme] .v-shell-page .v-operation-item:has(> .v-operation-item__main:hover) + .v-operation-item > .v-operation-item__main::before,
:root[data-theme] .v-shell-page .v-choice-swipe:has(> .v-choice-row:hover) + .v-choice-swipe > .v-choice-row::before,
:root[data-theme] .v-shell-page .v-choice-row:hover + .v-choice-row::before { opacity:0; }
:root[data-theme] .v-shell-page :is(.v-list-row,.v-settings-menu button):hover,
:root[data-theme] .v-shell-page .v-list--overview > li:has(+ li > .v-list-row:hover) > .v-list-row,
:root[data-theme] .v-shell-page .v-settings-menu button:has(+ button:hover) { border-bottom-color:transparent; }
}

/* An opaque light-grey response disappears on similarly grey glass.
   This tint gives white the approved #ececee and keeps contrast over glass. */
:root[data-theme="light"] .v-shell-page :is(.v-app-topbar__actions > .v-icon-button,.v-operations-tools > .v-glass-control) {
  --v-feedback-hover:linear-gradient(rgb(65 65 85 / 10%),rgb(65 65 85 / 10%));
  --v-feedback-press:var(--v-feedback-hover);
  --v-feedback-selection-fill:transparent;--v-feedback-selection-sheen:none;
  --v-feedback-edge:none;
}

/* Restore the original subtle glass response for light-theme green actions. */
:root[data-theme="light"] .v-shell-page .v-navigation-material--positive {
  --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-selection-fill:transparent;--v-feedback-selection-sheen:none;
  --v-navigation-selection:transparent;
}

