/* QA33: page layouts use the available width and the page's normal scroll. */
.v-shell-page .v-module-screen { max-width:none; }
.v-settings-groups,.v-settings-content,.v-export-section { max-width:none; }
.v-statistics-screen .v-category-statistics__body { background:transparent; box-shadow:none; border:0; border-radius:0; padding:0; grid-template-columns:minmax(230px,.7fr) minmax(0,1.3fr); gap:clamp(24px,4vw,64px); overflow:visible; max-height:none; }
.v-statistics-screen .v-category-chart { width:min(100%,380px); position:relative; top:auto; margin:18px auto; }
/* QA45: keep the light chart palette in both themes. The HTML centre stays
   theme-aware; only the SVG paint opts out of automatic dark recolouring. */
.v-shell-page .v-category-chart__svg {
  color-scheme:only light; color-interpolation:sRGB;
  opacity:1; filter:none; mix-blend-mode:normal; isolation:isolate;
}
.v-shell-page .v-category-chart__svg > circle {
  fill:none; stroke-opacity:1; opacity:1; filter:none; mix-blend-mode:normal;
}
.v-statistics-screen .v-breakdown-list { gap:9px; max-height:none; overflow:visible; align-content:start; }
.v-statistics-screen .v-category-stat-row { min-height:62px; grid-template-columns:32px minmax(0,1fr) auto 12px; padding:10px 13px; gap:10px; border:0; border-radius:17px; background:var(--v-surface-1); box-shadow:0 1px 3px rgb(0 0 0 / 2%); }
.v-statistics-screen .v-category-stat-row__name { font-size:14px; line-height:1.3; font-weight: 500; overflow-wrap:anywhere; }
.v-statistics-screen .v-category-stat-row__value { font-size:14px; gap:4px; font-variant-numeric:tabular-nums; }
.v-statistics-screen .v-category-stat-row__value strong { font-size:14px; font-weight: 600; overflow-wrap:anywhere; }
:is(.v-category-stat-row,.v-category-preview-row,.v-statistics-operation) .v-pictogram { --v-pictogram-fill:var(--v-category-color); width:32px; height:32px; display:grid; place-items:center; flex:none; border:0; border-radius:11px; color:#fff; background:var(--v-category-color); }
:is(.v-category-stat-row,.v-category-preview-row,.v-statistics-operation) .v-pictogram .v-icon { width:21px; height:21px; color:inherit; }
.v-statistics-screen .v-category-stat-row__arrow { width:12px; }
.v-statistics-screen .v-category-stat-row__arrow .v-icon { width:12px; height:12px; }
.v-statistics-detail { background:transparent; box-shadow:none; border:0; padding:0; max-height:none; overflow:visible; }
.v-statistics-detail__total { display:inline-block; margin:0 0 20px; padding:13px 18px; border-radius:16px; background:var(--v-surface-1); color:var(--v-text-1); font-size:clamp(20px,2vw,26px); font-weight: 500; }
[data-statistics-detail-list] { display:grid; gap:9px; align-content:start; }
.v-statistics-operation { min-height:67px; grid-template-columns:32px minmax(0,1fr) minmax(0,auto); gap:11px; padding:13px 15px; background:var(--v-surface-1); border:0; border-radius:17px; }
.v-statistics-operation__copy { gap:4px; }
.v-statistics-operation__copy > strong { font-size:14px; font-weight: 500; line-height:1.4; }
.v-statistics-operation__copy > small { font-size:12px; }
.v-statistics-operation > strong { max-width:100%; font-size:14px; font-weight: 600; white-space:normal; overflow-wrap:anywhere; }
.v-statistics-heading { justify-content:space-between; }
.v-glass-back,.v-statistics-back,.v-settings-detail .v-glass-back { display:grid; place-items:center; width:44px; height:44px; min-width:44px; min-height:44px; padding:0; border-radius:50%; border:1px solid var(--v-nav-border); background:var(--v-nav-glass); color:var(--v-navigation-ink); box-shadow:0 3px 12px rgb(0 0 0 / 3%); backdrop-filter:blur(16px); -webkit-backdrop-filter:blur(16px); cursor:pointer; }
.v-glass-back .v-icon { width:20px; height:20px; }
.v-statistics-heading h1 { flex:1; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; overflow:hidden; }
.v-statistics-screen,[data-settings-screen] { touch-action:pan-y; }
.v-settings-detail { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.v-settings-detail h2 { flex:1; min-width:0; margin:0; overflow-wrap:anywhere; }
.v-shell-page .v-spending-card { min-height:316px; grid-template-rows:auto auto minmax(0,1fr) auto; align-content:start; padding:20px; gap:10px; }
.v-spending-card__heading { display:block; }
.v-spending-card__period { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.v-spending-card__period > span { color:var(--v-text-2); font-size:12px; white-space:nowrap; }
.v-category-preview { min-height:0; gap:3px; }
.v-category-preview-row { grid-template-columns:28px minmax(0,1fr) auto; padding:5px 0; gap:9px; min-height:38px; border:0; border-radius:0; background:transparent; }
.v-category-preview-row .v-pictogram { width:28px; height:28px; border-radius:9px; }
.v-category-preview-row .v-icon { width:19px; height:19px; }
.v-category-preview-row .v-category-stat-row__name { font-size:12px; font-weight: 500; }
.v-category-preview-row .v-category-stat-row__value { display:flex; align-items:center; gap:10px; font-size:12px; }
.v-category-preview-row .v-category-stat-row__value strong { font-size:12px; font-weight: 600; }
.v-category-preview-row .v-category-stat-row__value small { min-width:32px; text-align:right; color:var(--v-text-2); font-size:11px; }
.v-shell-page :is(.v-balance-period,.v-balance-card__period,.v-statistics-period,.v-spending-card__period .v-glass-control) { background:var(--v-nav-glass); border:1px solid var(--v-nav-border); border-radius:14px; color:var(--v-navigation-ink); box-shadow:0 3px 12px rgb(0 0 0 / 3%); backdrop-filter:blur(16px); -webkit-backdrop-filter:blur(16px); min-height:40px; gap:7px; }
.v-shell-page .v-balance-card__period .v-icon { color:inherit; }
.v-spending-card__period .v-glass-control { font-size:12px; padding:8px 10px; }
.v-range-quick button,.v-range-custom button { border:0; box-shadow:none; }
.v-nav-item,.v-bottom-nav .v-nav-item { grid-template-rows:28px 24px; align-content:start; justify-items:center; align-items:start; gap:2px; }
.v-nav-item .v-nav-glyph,.v-bottom-nav .v-nav-glyph { align-self:center; }
.v-nav-item > span:not(.v-nav-glyph),.v-bottom-nav .v-nav-item > span:not(.v-nav-glyph) { align-self:start; width:100%; max-height:24px; margin:0; line-height:12px; font-size:10px; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; overflow:hidden; overflow-wrap:anywhere; }
.v-nav-item { min-height:68px; padding-top:6px; }
.v-bottom-nav .v-nav-item { min-height:60px; padding:4px 1px; }
/* The outer dock stays fixed; four equal cells share the available phone width. */
.v-shell-page .v-bottom-nav { --v-dock-width:min(90%,560px); --v-nav-cell:calc((var(--v-dock-width) - 16px) / 4); grid-template-columns:repeat(4,minmax(0,var(--v-nav-cell))); min-height:62px; padding-block:4px; }
.v-shell-page .v-bottom-nav::before { width:var(--v-dock-width); }
.v-shell-page .v-bottom-nav::before { border-width:1.5px; }
.v-shell-page .v-bottom-nav .v-nav-item { min-height:54px; grid-template-rows:30px 13px; align-content:center; gap:3px; padding:4px 1px; }
.v-shell-page .v-bottom-nav .v-nav-item > span:not(.v-nav-glyph) { display:block; width:max-content; max-width:calc(100% - 6px); max-height:13px; line-height:13px; font-size:10px; white-space:nowrap; overflow-wrap:normal; overflow:hidden; text-overflow:ellipsis; }
.v-shell-page .v-app-topbar__actions .v-icon { width:26px; height:26px; }
.v-shell-page :is(.v-dialog-save,[data-v-i18n="save"],[data-menu-text="save"]),
.v-shell-page :is(.v-dialog-save,[data-v-i18n="save"],[data-menu-text="save"]):is(:hover,:focus,:active) { color:var(--v-positive); background:transparent; }
/* The replacement for a hidden goal has a stable amount of content, regardless
   of the number of ledger rows or the selected period. It uses the normal page
   layout, with no clipped expense list or second scroll container. */
.v-shell-page .v-spending-card.v-balance-history-card { height:316px; min-height:0; grid-template-rows:40px minmax(0,1fr) auto; gap:14px; }
.v-history-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; min-width:0; }
.v-history-heading h2 { flex:1; min-width:0; margin:0; font-size:15px; font-weight: 500; line-height:1.25; overflow-wrap:anywhere; }
.v-history-heading .v-glass-control { max-width:52%; min-width:0; min-height:40px; flex:0 1 auto; padding:7px 9px; gap:6px; border-radius:13px; font-size:12px; line-height:1.2; }
.v-history-heading .v-glass-control > span { min-width:0; overflow-wrap:anywhere; }
.v-history-heading .v-glass-control .v-icon { width:18px; height:18px; flex:none; }
.v-balance-history-chart { min-height:0; min-width:0; height:100%; color:var(--v-positive); }
[data-history-tone="negative"] .v-balance-history-chart { color:var(--v-danger); }
[data-history-tone="neutral"] .v-balance-history-chart { color:var(--v-text-3); }
.v-balance-history-chart > svg { display:block; width:100%; height:100%; overflow:visible; }
.v-history-grid { stroke:var(--v-line); stroke-width:.7; opacity:.55; }
.v-history-axis { fill:var(--v-text-2); font:10px var(--v-font); }
.v-history-line { fill:none; stroke:currentColor; stroke-width:2.5; stroke-linecap:round; stroke-linejoin:round; vector-effect:non-scaling-stroke; }
.v-history-point { fill:currentColor; stroke:var(--v-surface-1); stroke-width:1.6; vector-effect:non-scaling-stroke; }
.v-history-footer { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; min-height:44px; align-items:center; padding:10px 12px; border-radius:14px; background:var(--v-surface-2); }
.v-history-footer > div { min-width:0; display:flex; align-items:baseline; flex-wrap:wrap; gap:5px; }
.v-history-footer > div:last-child { justify-content:flex-end; border-left:1px solid var(--v-line); padding-left:10px; }
.v-history-footer span { color:var(--v-text-2); font-size:11px; line-height:1.3; }
.v-history-footer strong { min-width:0; max-width:100%; color:var(--v-text-1); font-size:13px; font-weight: 600; line-height:1.3; overflow-wrap:anywhere; font-variant-numeric:tabular-nums; }
.v-balance-history-chart[aria-busy="true"] { border-radius:14px; background:linear-gradient(180deg,var(--v-surface-2),transparent); }
@media (min-width:720px) {
  .v-shell-page .v-activity-extra { display:list-item; }
  .v-shell-page .v-activity-card .v-list--overview > li:last-child:nth-child(odd):has([data-recent-operation]) { grid-column:1 / -1; }
}
@media (min-width:1100px) {
  .v-shell-page .v-overview { --v-home-hero-height:348px; align-items:stretch; }
  .v-shell-page .v-overview .v-balance-cluster,
  .v-shell-page .v-spending-card.v-balance-history-card { height:auto; min-height:var(--v-home-hero-height); }
  .v-shell-page .v-overview .v-balance-card__hero { grid-template-rows:40px minmax(min-content,1fr) auto; gap:16px; }
  .v-shell-page .v-spending-ring__dial { width:min(100%,126px); }
  .v-shell-page .v-money-layout .v-overview > .v-goal-card { --v-goal-art-size:140px; height:auto; min-height:var(--v-home-hero-height); }
}
.v-operations-search input { border-color:transparent; box-shadow:none; }
:root[data-focus-mode="pointer"] :where(button,a,input,textarea,select):focus-visible { outline:none!important; }
:root[data-focus-mode="pointer"] :where(input,textarea,select):focus-visible { box-shadow:none!important; }
:root[data-focus-mode="pointer"] .v-input-wrap:focus-within { border-color:var(--v-line); box-shadow:none; }
:root[data-focus-mode="keyboard"] :where(button,a,input,textarea,select):focus-visible { outline:2px solid var(--v-text-3); outline-offset:2px; }
:root[data-focus-mode="keyboard"] :is(.v-icon-button,[data-date-close],[data-range-close],[data-range-from],[data-range-to],.v-operations-search input):focus-visible { outline:none; box-shadow:inset 0 -2px var(--v-text-3); }
.v-shell-page dialog.v-glass-picker[open] { position:fixed; inset:auto; display:block; height:auto; margin:0; width:min(340px,calc(100vw - 24px)); min-height:0; max-width:calc(100vw - 24px); padding:0; border:0; border-radius:22px; overflow:hidden; overflow:clip; background:transparent; box-shadow:none; transform:none; }
.v-shell-page dialog.v-glass-picker::backdrop { background:transparent; backdrop-filter:none; -webkit-backdrop-filter:none; }
.v-shell-page .v-glass-picker > .v-breakdown-dialog__surface { width:100%; min-height:0; max-height:inherit; background:var(--v-nav-glass); border:1px solid var(--v-nav-border); box-shadow:none; border-radius:inherit; padding:0; backdrop-filter:blur(24px); -webkit-backdrop-filter:blur(24px); }
.v-shell-page .v-glass-picker .v-dialog-body { flex:1 1 auto; }
.v-shell-page .v-glass-picker > .v-breakdown-dialog__surface { opacity:1; transform:none; clip-path:inset(0 0 100% round 22px); transition:clip-path 160ms var(--v-ease-out); }
.v-shell-page .v-glass-picker.is-visible > .v-breakdown-dialog__surface { opacity:1; transform:none; clip-path:inset(0 0 0 round 22px); }
.v-shell-page .v-glass-picker.is-closing > .v-breakdown-dialog__surface { opacity:1; transform:none; clip-path:inset(0 0 100% round 22px); transition-duration:120ms; }
@media(prefers-reduced-motion:reduce) {
 .v-shell-page .v-glass-picker > .v-breakdown-dialog__surface { transition:none;clip-path:none; }
}
.v-shell-page .v-glass-picker .v-date-grid button[aria-selected="true"] {   font-weight: 500;   }
.v-shell-page .v-glass-picker .v-breakdown-dialog__header { position:relative; top:auto; min-height:52px; padding:12px 14px 8px; background:transparent; border:0; box-shadow:none; }
.v-shell-page .v-glass-picker .v-breakdown-dialog__header h2 { font-size:17px; }
.v-shell-page .v-glass-picker .v-dialog-body { padding:8px 14px 16px; }
.v-glass-picker .v-range-quick { margin-bottom:14px; }
.v-glass-picker .v-range-quick button { font-size:12px; min-height:44px; padding:8px; }
.v-glass-picker .v-range-custom button { font-size:12px; min-height:44px; padding:8px; }
.v-glass-picker .v-date-month { margin-bottom:8px; }
.v-glass-picker .v-date-grid { gap:3px; }
.v-glass-picker .v-date-grid button { min-height:34px; height:34px; min-width:0; font-size:13px; }
.v-glass-picker .v-date-actions { gap:6px; margin-top:10px; }
.v-glass-picker .v-date-actions .v-button { min-height:40px; padding:8px 10px; font-size:12px; }
@media (min-width:1280px) {
  .v-statistics-screen .v-breakdown-list { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .v-statistics-screen .v-category-statistics__body { grid-template-columns:minmax(240px,.6fr) minmax(0,1.4fr); }
  .v-statistics-screen .v-category-stat-row { min-height:54px; padding-block:8px; }
  .v-statistics-screen .v-category-stat-row__value strong { line-height:18px; }
  .v-statistics-screen .v-category-stat-row__value small { font-size:11px; line-height:13px; }
  [data-statistics-detail-list] { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:1100px),(pointer:coarse) {
  .v-statistics-heading { display:flex; gap:12px; }
  .v-statistics-heading h1 { order:-1; text-align:left; }
}
@media (max-width:899px) {
  .v-statistics-screen .v-category-statistics__body { grid-template-columns:minmax(0,1fr); gap:20px; }
  .v-statistics-screen .v-category-chart { width:min(100%,290px); margin:0 auto 6px; }
  .v-statistics-screen .v-breakdown-list { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:719px) {
  .v-statistics-screen .v-breakdown-list { grid-template-columns:minmax(0,1fr); }
  .v-statistics-screen .v-category-chart { width:min(100%,240px); }
  .v-statistics-screen .v-category-stat-row { gap:9px; padding:11px; min-height:64px; }
  .v-statistics-screen .v-category-stat-row__name { font-size:13px; }
  .v-statistics-screen .v-category-stat-row__value strong { font-size:13px; }
  .v-statistics-operation { grid-template-columns:30px minmax(0,1fr) minmax(0,auto); padding:12px; gap:9px; }
  .v-statistics-operation > strong { max-width:112px; font-size:13px; }
  .v-statistics-operation__copy > strong { font-size:13px; }
  .v-statistics-operation .v-pictogram { width:30px; height:30px; }
  .v-statistics-heading h1 { font-size:24px; }
  .v-statistics-screen,[data-settings-screen]:has([data-settings-back]:not([hidden])) { touch-action:pan-y; }
}
@media (pointer:coarse) { .v-statistics-screen,[data-settings-screen]:has([data-settings-back]:not([hidden])) { touch-action:pan-y; } }
/* QA35: the same original glyphs become coloured outlines on a neutral dark
   tile. Category colour identity stays identical to its chart segment. Border
   space is inside the existing box, so switching themes cannot move a row. */
:root[data-theme="dark"] .v-shell-page :is(.v-pictogram,.v-settings-menu__icon,.v-operation-item__icon,.v-history-item__icon,.v-list-row__icon):not(.v-nav-glyph) {
  border:1px solid rgb(255 255 255 / 12%);
  background:linear-gradient(180deg,rgb(255 255 255 / 9%),transparent 42%),var(--v-icon-surface);
  color:var(--v-pictogram-fill); box-shadow:inset 0 1px 0 rgb(255 255 255 / 3%);
}
:root[data-theme="dark"] .v-shell-page :is(.v-pictogram,.v-settings-menu__icon,.v-operation-item__icon,.v-history-item__icon,.v-list-row__icon):not(.v-nav-glyph) .v-icon { color:var(--v-pictogram-fill); }
:root[data-theme="dark"] .v-shell-page :is(.v-pictogram,.v-settings-menu__icon,.v-operation-item__icon,.v-history-item__icon,.v-list-row__icon):not(.v-nav-glyph) .v-icon [fill="currentColor"] { fill:none; fill-opacity:1; }
@media (prefers-reduced-motion:reduce) { .v-operation-day .v-operation-item__actions { transition:none; } }

/* QA38: shared type metrics for both themes. Use the native font with standard
   weights; no theme-dependent enlargement, stroke or artificial bold. */
.v-shell-page { font-synthesis: none; }
.v-shell-page :where(strong,b,h1,h2,h3) { font-weight: 600; }
.v-shell-page :is(.v-section-title,.v-module-screen__heading h1,.v-card-title) { line-height: 1.25; letter-spacing: -.02em; }
.v-shell-page :is(.v-balance-period,.v-statistics-period,.v-spending-ring__heading) { font-weight: 500; line-height: 1.35; letter-spacing: 0; }
.v-shell-page :is(.v-operation-item__copy,.v-list-row__copy,.v-history-item__copy) strong { font-weight: 500; line-height: 1.4; letter-spacing: 0; }
.v-shell-page :is(.v-operation-item__amount,.v-list-row__value,.v-history-item__amount) { font-weight: 600; }
.v-shell-page .v-overview > .v-goal-card .v-goal-card__name { font-weight: 600; line-height: 1.2; letter-spacing: -.015em; }
:root { --v-navigation-label-ink:#000; }
:root[data-theme="dark"] { --v-navigation-label-ink:#e8e8ea; }
.v-shell-page .v-nav-item > span:not(.v-nav-glyph) { font-weight:400; color:var(--v-navigation-label-ink); letter-spacing:0; text-shadow:none; }

/* QA41: compact content inside an unchanged rail touch target. Only the rail
   receives a wrapper; dock rows, moving capsule and safe-area geometry stay. */
.v-shell-page .v-side-rail .v-nav-item { align-content:center; grid-template-rows:auto; padding:0; }
.v-shell-page .v-side-rail .v-nav-item > .v-nav-content {
  display:grid; grid-template-rows:28px auto; align-content:center; justify-items:center;
  align-items:center; gap:2px; width:fit-content; min-width:min(64px,100%); max-width:100%;
  max-height:none; padding:5px 4px; border-radius:14px; overflow:visible;
  -webkit-line-clamp:unset; box-sizing:border-box;
  transition:background-color var(--v-motion-fast) ease,box-shadow var(--v-motion-fast) ease;
}
.v-shell-page .v-side-rail .v-nav-content > span:not(.v-nav-glyph) {
  display:block; max-width:100%; margin:0; font-size:10px; font-weight:400; line-height:12px;
  color:var(--v-navigation-label-ink); letter-spacing:0; overflow-wrap:anywhere; text-align:center; text-shadow:none;
}
@media (prefers-reduced-motion:reduce) {
  .v-shell-page .v-side-rail .v-nav-content { transition:none; }
}

/* A120: a calendar is anchored to its button; actions never leave the surface. */
.v-shell-page .v-glass-picker.v-date-dialog .v-date-actions { flex:none; margin:0; padding:0 14px 14px; }
.v-shell-page .v-glass-picker.v-date-dialog .v-date-actions button { min-height:40px; font-size:13px; }
.v-shell-page .v-glass-picker.v-date-dialog .v-dialog-body { padding-bottom:8px; }
.v-shell-page .v-glass-picker.v-date-dialog[data-picker-compact] .v-breakdown-dialog__header { min-height:48px; padding:2px 12px; }
.v-shell-page .v-glass-picker.v-date-dialog[data-picker-compact] .v-dialog-body { padding:4px 12px 6px; }
.v-shell-page .v-glass-picker.v-date-dialog[data-picker-compact] .v-date-month { margin:0 0 4px; }
.v-shell-page .v-glass-picker.v-date-dialog[data-picker-compact] .v-date-weekdays span { padding:3px 0; }
.v-shell-page .v-glass-picker.v-date-dialog[data-picker-compact] .v-date-grid { gap:2px; }
.v-shell-page .v-glass-picker.v-date-dialog[data-picker-compact] .v-date-grid > :is(button,span) { height:var(--v-date-cell-size,30px); min-height:var(--v-date-cell-size,30px); }
.v-shell-page .v-glass-picker.v-date-dialog[data-picker-compact] .v-date-actions { padding:2px 12px 10px; }
@media(max-height:450px) {
 .v-shell-page .v-glass-picker.v-date-dialog[data-picker-compact] { --v-date-cell-size:28px; }
}
