:root{--font-ui: "Public Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "Fragment Mono", ui-monospace, "SF Mono", Menlo, monospace;--text-xs: .75rem;--text-sm: .8125rem;--text-base: .9375rem;--text-md: 1.0625rem;--text-lg: 1.375rem;--text-xl: 2rem;--weight-regular: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--leading-tight: 1.2;--leading-normal: 1.5;--leading-relaxed: 1.6;--space-2xs: 4px;--space-xs: 8px;--space-sm: 12px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--space-2xl: 48px;--space-3xl: 64px;--radius-sm: 8px;--radius-md: 14px;--radius-lg: 20px;--radius-full: 999px;--ease-out-expo: cubic-bezier(.16, 1, .3, 1);--duration-fast: .12s;--duration-base: .2s;--bottom-nav-height: 60px;--sidebar-width: 248px;--hue-brand: 165;--chroma-neutral: .01;--color-bg: oklch(97.5% var(--chroma-neutral) var(--hue-brand));--color-surface: oklch(99.3% .004 var(--hue-brand));--color-surface-secondary: oklch(95% var(--chroma-neutral) var(--hue-brand));--color-surface-raised: oklch(100% 0 0);--color-text-primary: oklch(22% .014 var(--hue-brand));--color-text-secondary: oklch(46% .014 var(--hue-brand));--color-text-tertiary: oklch(62% .012 var(--hue-brand));--color-border: oklch(89% .012 var(--hue-brand));--color-border-strong: oklch(80% .014 var(--hue-brand));--color-accent: oklch(52% .1 var(--hue-brand));--color-accent-contrast: oklch(99% .004 var(--hue-brand));--color-accent-tint: oklch(92% .045 var(--hue-brand));--color-positive: oklch(45% .1 var(--hue-brand));--color-negative: oklch(48% .14 27);--color-warning: oklch(56% .11 75);--shadow-sm: 0 1px 2px oklch(22% .014 var(--hue-brand) / .06);--shadow-md: 0 8px 24px oklch(22% .014 var(--hue-brand) / .1)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--color-bg: oklch(17% .012 var(--hue-brand));--color-surface: oklch(21% .013 var(--hue-brand));--color-surface-secondary: oklch(25% .014 var(--hue-brand));--color-surface-raised: oklch(28% .015 var(--hue-brand));--color-text-primary: oklch(94% .006 var(--hue-brand));--color-text-secondary: oklch(72% .012 var(--hue-brand));--color-text-tertiary: oklch(54% .012 var(--hue-brand));--color-border: oklch(31% .015 var(--hue-brand));--color-border-strong: oklch(40% .016 var(--hue-brand));--color-accent: oklch(78% .1 var(--hue-brand));--color-accent-contrast: oklch(15% .014 var(--hue-brand));--color-accent-tint: oklch(30% .05 var(--hue-brand));--color-positive: oklch(78% .1 var(--hue-brand));--color-negative: oklch(74% .13 27);--color-warning: oklch(78% .1 75);--shadow-sm: none;--shadow-md: none}}:root[data-theme=dark]{--color-bg: oklch(17% .012 var(--hue-brand));--color-surface: oklch(21% .013 var(--hue-brand));--color-surface-secondary: oklch(25% .014 var(--hue-brand));--color-surface-raised: oklch(28% .015 var(--hue-brand));--color-text-primary: oklch(94% .006 var(--hue-brand));--color-text-secondary: oklch(72% .012 var(--hue-brand));--color-text-tertiary: oklch(54% .012 var(--hue-brand));--color-border: oklch(31% .015 var(--hue-brand));--color-border-strong: oklch(40% .016 var(--hue-brand));--color-accent: oklch(78% .1 var(--hue-brand));--color-accent-contrast: oklch(15% .014 var(--hue-brand));--color-accent-tint: oklch(30% .05 var(--hue-brand));--color-positive: oklch(78% .1 var(--hue-brand));--color-negative: oklch(74% .13 27);--color-warning: oklch(78% .1 75);--shadow-sm: none;--shadow-md: none}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--color-bg);color:var(--color-text-primary);font-family:var(--font-ui);font-size:var(--text-base);font-weight:var(--weight-regular);line-height:var(--leading-relaxed);-webkit-font-smoothing:antialiased;font-kerning:normal}img,svg{max-width:100%;display:block}a{color:inherit}h1,h2,h3,h4{margin:0 0 var(--space-xs);line-height:var(--leading-tight);font-weight:var(--weight-semibold);letter-spacing:-.01em}p{margin:0 0 var(--space-sm);max-width:70ch}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.figure,.kpi-value,.row-amount,.bar-amount{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;letter-spacing:-.01em}.app-shell{min-height:100vh}.app-main{padding:var(--space-md);padding-bottom:calc(var(--bottom-nav-height) + env(safe-area-inset-bottom) + var(--space-2xl));max-width:1180px;margin-inline:auto}@media (min-width: 1024px){.app-shell{display:grid;grid-template-columns:var(--sidebar-width) 1fr}.app-main{padding:var(--space-2xl) var(--space-2xl) var(--space-2xl) var(--space-xl)}}.app-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--color-border);background:var(--color-surface);position:sticky;top:0;z-index:10}.app-header h1{font-size:var(--text-md);font-weight:var(--weight-semibold);margin:0}@media (min-width: 1024px){.app-header{display:none}}.sidebar{display:none}@media (min-width: 1024px){.sidebar{display:flex;flex-direction:column;gap:2px;padding:var(--space-xl) var(--space-sm) var(--space-lg);border-right:1px solid var(--color-border);background:var(--color-surface);height:100vh;position:sticky;top:0}.sidebar-brand{font-weight:var(--weight-bold);font-size:var(--text-md);letter-spacing:-.015em;padding:0 var(--space-sm) var(--space-lg);color:var(--color-text-primary)}.sidebar-link{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);color:var(--color-text-secondary);text-decoration:none;font-size:var(--text-sm);font-weight:var(--weight-medium);transition:background var(--duration-fast) var(--ease-out-expo),color var(--duration-fast) var(--ease-out-expo)}.sidebar-link svg{width:18px;height:18px;flex-shrink:0}.sidebar-link:hover{background:var(--color-surface-secondary);color:var(--color-text-primary)}.sidebar-link[aria-current=page]{background:var(--color-surface-secondary);color:var(--color-text-primary);font-weight:var(--weight-semibold)}.sidebar-footer{margin-top:auto;padding:var(--space-sm)}}.bottom-nav{position:fixed;bottom:0;left:0;right:0;display:flex;justify-content:space-around;background:var(--color-surface);border-top:1px solid var(--color-border);padding-bottom:env(safe-area-inset-bottom);z-index:20}@media (min-width: 1024px){.bottom-nav{display:none}}.bottom-nav-link{position:relative;flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:var(--space-xs) 0 6px;min-height:56px;justify-content:center;text-decoration:none;color:var(--color-text-tertiary);font-size:.6875rem;font-weight:var(--weight-medium);transition:color var(--duration-fast) var(--ease-out-expo)}.bottom-nav-link:before{content:"";position:absolute;top:0;left:50%;width:20px;height:2px;border-radius:var(--radius-full);background:var(--color-accent);transform:translate(-50%) scaleX(0);transition:transform var(--duration-base) var(--ease-out-expo)}.bottom-nav-link[aria-current=page]{color:var(--color-accent)}.bottom-nav-link[aria-current=page]:before{transform:translate(-50%) scaleX(1)}.bottom-nav-link svg{width:21px;height:21px}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-md);box-shadow:var(--shadow-sm)}.hero-figure{display:flex;flex-direction:column;gap:2px}.hero-figure .figure{font-size:var(--text-xl);font-weight:var(--weight-medium);line-height:var(--leading-tight)}.hero-split{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-lg);margin-top:var(--space-lg);padding-top:var(--space-md);border-top:1px solid var(--color-border)}.hero-split .kpi-label{margin-bottom:var(--space-2xs)}.hero-split .figure{font-size:var(--text-md);font-weight:var(--weight-medium)}.kpi-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-sm);margin-bottom:var(--space-lg)}@media (min-width: 640px){.kpi-grid{grid-template-columns:repeat(4,1fr)}}.kpi-card .kpi-label{color:var(--color-text-secondary);font-size:var(--text-xs);font-weight:var(--weight-medium);text-transform:uppercase;letter-spacing:.03em;margin-bottom:var(--space-2xs)}.kpi-card .kpi-value{font-size:var(--text-lg);font-weight:var(--weight-medium);line-height:var(--leading-tight)}.kpi-card .kpi-delta{font-size:var(--text-xs);margin-top:var(--space-2xs);font-family:var(--font-mono)}.kpi-delta.positive{color:var(--color-positive)}.kpi-delta.negative{color:var(--color-negative)}.section{margin-bottom:var(--space-xl)}.section-title{display:flex;align-items:baseline;justify-content:space-between;font-size:var(--text-sm);font-weight:var(--weight-semibold);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary);margin-bottom:var(--space-sm)}.section-title a{text-transform:none;letter-spacing:normal;font-weight:var(--weight-medium)}.grid-2col{display:grid;gap:var(--space-md)}@media (min-width: 1024px){.grid-2col{grid-template-columns:1.4fr 1fr}}.chart-bars{display:flex;align-items:flex-end;gap:var(--space-sm);height:128px}.chart-bar{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;gap:var(--space-xs)}.chart-bar-track{width:100%;flex:1;display:flex;align-items:flex-end}.chart-bar-fill{width:100%;background:var(--color-surface-secondary);border-radius:3px 3px 0 0;position:relative;min-height:3px}.chart-bar-fill[data-current=true]{background:var(--color-accent)}.chart-bar-label{color:var(--color-text-tertiary);font-size:var(--text-xs)}.chart-bar-value{font-size:var(--text-xs)}.row-list{display:flex;flex-direction:column}.row-item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-sm) 0;border-bottom:1px solid var(--color-border);text-decoration:none;color:inherit}.row-item:last-child{border-bottom:none}.row-title{font-weight:var(--weight-medium);font-size:var(--text-base)}.row-subtitle{color:var(--color-text-secondary);font-size:var(--text-xs);margin-top:1px}.row-amount{font-weight:var(--weight-medium);font-size:var(--text-base);white-space:nowrap}.row-amount.negative{color:var(--color-negative)}.row-amount.positive{color:var(--color-positive)}.row-main{min-width:0;flex:1}.row-legs{display:flex;flex-direction:column;align-items:flex-end;gap:2px;min-width:0}.row-leg{display:flex;align-items:baseline;gap:var(--space-xs);min-width:0}.row-leg-account{color:var(--color-text-tertiary);font-size:var(--text-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:16ch}.row-icon-label{display:flex;align-items:center;gap:var(--space-sm)}.row-icon-label svg{width:20px;height:20px;color:var(--color-text-secondary);flex-shrink:0}.row-progress{background:var(--color-surface-secondary);border-radius:var(--radius-full);height:4px;margin-top:var(--space-xs);overflow:hidden}.row-progress-fill{background:var(--color-accent);height:100%;border-radius:var(--radius-full)}.badge{display:inline-flex;align-items:center;padding:2px var(--space-xs);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--weight-semibold);background:var(--color-surface-secondary);color:var(--color-text-secondary)}.badge-success{background:var(--color-accent-tint);color:var(--color-positive)}.badge-warning{background:color-mix(in oklch,var(--color-warning) 18%,var(--color-surface));color:var(--color-warning)}.badge-danger{background:color-mix(in oklch,var(--color-negative) 16%,var(--color-surface));color:var(--color-negative)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-xs);border-radius:var(--radius-sm);padding:var(--space-xs) var(--space-md);font-size:var(--text-sm);font-weight:var(--weight-semibold);border:1px solid transparent;cursor:pointer;min-height:40px;font-family:var(--font-ui);text-decoration:none;transition:background var(--duration-fast) var(--ease-out-expo),border-color var(--duration-fast) var(--ease-out-expo)}.btn-primary{background:var(--color-accent);color:var(--color-accent-contrast)}.btn-primary:hover{background:color-mix(in oklch,var(--color-accent) 88%,black)}.btn-secondary{background:var(--color-surface-secondary);color:var(--color-text-primary);border-color:var(--color-border)}.btn-secondary:hover{border-color:var(--color-border-strong)}.btn-icon{padding:var(--space-xs);min-width:40px;background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-primary)}.btn-icon:hover{background:var(--color-surface-secondary)}.pager{display:flex;justify-content:flex-end;gap:var(--space-xs);margin-top:var(--space-md)}.pager .btn:disabled{opacity:.4;cursor:default}.filter-bar{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-bottom:var(--space-md)}.filter-chip{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-secondary);border-radius:var(--radius-full);padding:5px var(--space-sm);font-size:var(--text-xs);font-weight:var(--weight-medium);cursor:pointer;font-family:var(--font-ui);transition:background var(--duration-fast) var(--ease-out-expo),color var(--duration-fast) var(--ease-out-expo),border-color var(--duration-fast) var(--ease-out-expo)}.filter-chip:hover{border-color:var(--color-border-strong)}.filter-chip[aria-pressed=true]{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-contrast)}.skeleton-block{border-radius:var(--radius-md);background:linear-gradient(90deg,var(--color-surface-secondary) 25%,var(--color-border) 37%,var(--color-surface-secondary) 63%);background-size:400% 100%;animation:skeleton-shimmer 1.4s ease infinite;min-height:80px}@keyframes skeleton-shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}@media (prefers-reduced-motion: reduce){.skeleton-block{animation:none}}.empty-state,.error-state{text-align:center;padding:var(--space-xl) var(--space-md);color:var(--color-text-secondary);font-size:var(--text-sm)}.error-state .btn{margin-top:var(--space-sm)}.text-secondary{color:var(--color-text-secondary)}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
