.month-navigation {display:flex;align-items:center;gap:14px;padding:14px;margin-bottom:12px;border:1px solid var(--line);border-radius:12px;background:var(--surface);min-width:0}
.year-switch {display:flex;align-items:center;justify-content:space-between;gap:10px;flex:0 0 110px;border:1px solid var(--line);border-radius:8px;padding:4px;background:var(--bg)}
.year-switch button {padding:5px 8px;border:0;background:transparent;color:var(--muted);font-size:20px;cursor:pointer}
.year-switch button:disabled {opacity:.35;cursor:default}
.month-options {display:grid;grid-template-columns:repeat(13,minmax(0,1fr));gap:6px;flex:1;padding:4px;min-width:0}
.month-option {flex:1 0 57px;display:flex;flex-direction:column;align-items:center;gap:3px;min-height:43px;padding:8px 5px;border:1px solid var(--line);border-radius:7px;background:var(--surface-raised);color:var(--text-secondary);cursor:pointer;transition:background .18s,border-color .18s,box-shadow .18s}
.month-option strong {font-size:10px;letter-spacing:.05em}
.month-option small {font-size:9px;color:var(--muted);max-width:100%;overflow:hidden;text-overflow:ellipsis}
.month-option:hover {background:var(--surface-hover);border-color:var(--border-hover)}
.month-option[aria-pressed="true"] {border-color:var(--primary);background:var(--accent-soft);color:var(--accent);box-shadow:0 0 0 1px var(--primary),0 0 12px var(--accent-glow)}
.month-option[aria-pressed="true"] small {color:var(--accent)}
.month-navigation button:focus-visible {outline:2px solid var(--accent);outline-offset:3px}
@media(max-width:1100px){.month-navigation{flex-direction:column;align-items:stretch;gap:8px}.year-switch{flex-basis:auto;width:125px;align-self:center}.month-options{flex:none;width:100%;grid-template-columns:repeat(7,minmax(0,1fr))}}
@media(max-width:650px){.month-navigation{padding:10px}.month-options{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(prefers-reduced-motion:reduce){.month-option{transition:none}}
:root {
  color-scheme: dark;
  --bg: #141116;
  --surface: #1c1920;
  --surface-raised: #25212b;
  --surface-hover: #2d2732;
  --sidebar: #17131b;
  --line: #3c333f;
  --line-soft: #302a35;
  --ink: #f5f1f5;
  --muted: #b3a7b9;
  --text-secondary: #cfc3d4;
  --accent: #ff8585;
  --primary: #c00000;
  --primary-hover: #a50000;
  --on-primary: #ffffff;
  --accent-soft: #38202b;
  --accent-border: #75414f;
  --border-hover: #826878;
  --focus-ring: #e83c5940;
  --accent-glow: #e83c5912;
  --green: #65dcaf;
  --red: #ff92a1;
  --amber: #efbd83;
  --positive-soft: #20392f;
  --positive-ink: #86e0b9;
  --secondary-accent: #d5a2bd;
  --secondary-soft: #392b39;
  --secondary-ink: #e2b8d0;
  --balance-ink: #ff9eaa;
  --chart-grid: #45394b;
  --chart-track: #3c3445;
  --empty-overlay: #1c192080;
  --danger-ink: #ffadba;
  --danger-soft: #40232d;
  --danger-border: #774052;
  --notice-bg: #382c20;
  --notice-border: #695135;
  --notice-ink: #f0c894;
  --overlay: #08060bb3;
  --shadow: #0008;
  --positive-glow: #65dcaf22;
  --selection: #753947;
  --accent-faint: #f05b7518;
  --secondary-faint: #c282aa18;
  --chart-0: #ff8192;
  --chart-1: #c5a2d9;
  --chart-2: #69c5a8;
  --chart-3: #e5b17d;
  --chart-4: #97aecf;
  --chart-5: #aa9aaa;
  --tone: var(--accent);
  font-family: 'Segoe UI Variable Text', 'Segoe UI', Arial, sans-serif;
  font-size: 14px;
  color: var(--ink);
  background: var(--bg);
  font-synthesis: none;
}
:root[data-theme="light"] {
  color-scheme: light;
  --bg: #f6f7fa;
  --surface: #ffffff;
  --surface-raised: #f3f1f5;
  --surface-hover: #f0edf3;
  --sidebar: #ffffff;
  --line: #ded8e1;
  --line-soft: #eae5ed;
  --ink: #2e2532;
  --muted: #716577;
  --text-secondary: #61536b;
  --accent: #b50000;
  --primary: #c00000;
  --primary-hover: #a50000;
  --on-primary: #ffffff;
  --accent-soft: #fff0f2;
  --accent-border: #edbac3;
  --border-hover: #a78f9f;
  --focus-ring: #d52c472c;
  --accent-glow: #b500000a;
  --green: #16724e;
  --red: #b50000;
  --amber: #8a5319;
  --positive-soft: #e6f5ed;
  --positive-ink: #146944;
  --secondary-accent: #8e446e;
  --secondary-soft: #f4eaf2;
  --secondary-ink: #843e68;
  --balance-ink: #ad1e36;
  --chart-grid: #ded7e3;
  --chart-track: #e9e3ec;
  --empty-overlay: #ffffffb0;
  --danger-ink: #ac223b;
  --danger-soft: #fff0f3;
  --danger-border: #edc2cd;
  --notice-bg: #fff5e7;
  --notice-border: #e8cda6;
  --notice-ink: #825017;
  --overlay: #24182770;
  --shadow: #27152922;
  --positive-glow: #16724e14;
  --selection: #f2c1ca;
  --accent-faint: #d52c4715;
  --secondary-faint: #8e446e15;
  --chart-0: #bd2943;
  --chart-1: #8b61a9;
  --chart-2: #267d63;
  --chart-3: #ac701f;
  --chart-4: #5473a3;
  --chart-5: #88758a;
}

* { box-sizing: border-box; }
body { margin: 0; }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
button:disabled { opacity: .45; cursor: default; }
a { color: inherit; text-decoration: none; }
[hidden] { display: none !important; }
button, a, input, select, textarea, summary { outline-offset: 4px; }
:focus-visible { outline: 2px solid var(--accent); }
::selection { background: var(--selection); color: var(--ink); }
::-webkit-scrollbar { width: 7px; height: 7px; }
::-webkit-scrollbar-thumb { background: var(--chart-track); border-radius: 8px; }
::-webkit-scrollbar-track { background: transparent; }
small { display: block; font-size: 11px; color: var(--muted); line-height: 1.65; font-weight: 400; }
h1, h2, h3 { font-family: Bahnschrift, 'Segoe UI', sans-serif; font-weight: 550; }
h1 { font-size: 30px; letter-spacing: -.7px; margin: 6px 0 9px; }
h2 { font-size: 16px; letter-spacing: -.2px; margin: 0; }
h3 { font-size: 14px; margin: 0; }
.subtle { color: var(--muted); font-size: 11px; line-height: 1.7; }
.app { display: grid; grid-template-columns: 230px minmax(0,1fr); min-height: 100vh; }
aside { position: sticky; top: 0; height: 100vh; overflow-y: auto; display: flex; flex-direction: column; padding: 29px 15px 0; background: var(--sidebar); border-right: 1px solid var(--line-soft); }
.brand { display: flex; gap: 11px; align-items: center; padding: 0 16px; color: var(--accent); font-size: 27px; font-weight: 750; letter-spacing: -1.3px; }
.brand > span { font-size: 31px; color: var(--ink); }
.brand-dot { color: var(--accent); }
.sidebar-brand-row { display: flex; align-items: center; justify-content: space-between; }
#close-sidebar { display: none; }
.brand-mark { width: 27px; height: 27px; stroke: var(--accent); fill: none; stroke-width: 1.6; }
.workspace { display: flex; gap: 10px; align-items: center; flex-shrink: 0; padding: 17px 10px; margin: 29px 4px 13px; border: 1px solid var(--line); border-radius: 9px; font-size: 12px; font-weight: 600; background: var(--surface-raised); }
.workspace small { font-size: 10px; margin-top: 2px; }
.workspace-icon, .avatar { width: 32px; height: 34px; display: grid; place-items: center; border: 1px solid var(--accent-border); background: var(--accent-soft); color: var(--accent); border-radius: 7px; font-weight: 600; }
.nav-caption { font-size: 10px; color: var(--muted); margin: 19px 15px 10px; }
nav a { display: flex; gap: 12px; align-items: center; border: 1px solid transparent; border-radius: 6px; padding: 11px 13px; margin: 4px 0; color: var(--text-secondary); font-size: 12px; font-weight: 500; }
nav a > span { display: grid; place-items: center; width: 18px; font-size: 18px; }
.nav-icon { width: 17px; height: 17px; stroke-width: 1.6; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; }
nav a:hover { background: var(--surface-raised); color: var(--ink); }
nav a.active { color: var(--accent); background: var(--accent-soft); border-color: var(--accent-border); box-shadow: inset 2px 0 0 var(--accent); }
.sidebar-bottom { flex-shrink: 0; display: flex; gap: 10px; align-items: center; padding: 19px 5px; border-top: 1px solid var(--line-soft); margin-top: auto; font-size: 11px; }
.sidebar-bottom small { font-size: 10px; }
.sidebar-bottom .icon-button { margin-left: auto; }
.main-shell { min-width: 0; }
.topbar { height: 67px; padding: 0 34px; border-bottom: 1px solid var(--line-soft); display: flex; align-items: center; gap: 15px; font-size: 11px; color: var(--muted); background: var(--bg); }
.topbar-right { margin-left: auto; font-size: 10px; }
#sync-status { display: flex; align-items: center; gap: 8px; }
#sync-status::before, .status-dot { content: ''; display: inline-block; width: 6px; height: 6px; flex-shrink: 0; border-radius: 50%; background: var(--green); box-shadow: 0 0 7px var(--positive-glow); }
.topbar #menu { display: none; }
main { padding: 28px 34px 20px; max-width: 1700px; margin: auto; }
.page-heading { display: flex; justify-content: space-between; gap: 20px; align-items: center; margin-bottom: 25px; }
.page-heading p { font-size: 12px; color: var(--muted); margin: 0; line-height: 1.6; }
.page-heading .subtle { font-size: 10px; color: var(--muted); }
.primary, .secondary { padding: 10px 15px; border: 1px solid transparent; border-radius: 6px; font-size: 11px; font-weight: 650; white-space: nowrap; min-height: 37px; }
.primary { color: var(--on-primary); background: var(--primary); border-color: var(--primary); box-shadow: 0 0 16px var(--accent-glow); }
.primary:hover { background: var(--primary-hover); border-color: var(--primary-hover); }
.secondary { background: var(--surface); border-color: var(--line); color: var(--text-secondary); }
.secondary:hover { background: var(--surface-hover); border-color: var(--border-hover); }
.icon-button { border: 0; background: transparent; color: var(--muted); padding: 6px; font-size: 19px; line-height: 1; }
.icon-button:hover { color: var(--accent); }
.toolbar { display: flex; justify-content: space-between; align-items: end; gap: 14px; margin-bottom: 23px; }
.period-fields { display: flex; gap: 11px; align-items: end; flex-wrap: wrap; }
.period-fields label { display: flex; flex-direction: column; gap: 7px; font-size: 10px; color: var(--muted); }
.period-fields > span { padding-bottom: 11px; color: var(--muted); }
.period-fields #sector-filter { width: 185px; }
input, select, textarea { width: 100%; min-width: 0; color: var(--ink); border: 1px solid var(--line); background: var(--surface-raised); border-radius: 5px; padding: 10px 11px; font-size: 12px; }
input::placeholder, textarea::placeholder { color: var(--muted); }
input[type=date] { width: 141px; }
input:focus, select:focus, textarea:focus { border-color: var(--accent-border); outline: 2px solid var(--focus-ring); }
select option { background: var(--surface); color: var(--ink); }
.metrics { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 14px; margin-bottom: 22px; }
.metric { min-width: 0; position: relative; background: var(--surface); padding: 18px 19px 17px; border: 1px solid var(--line); border-radius: 9px; overflow: hidden; }
.metric-label { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-size: 11px; color: var(--text-secondary); }
.metric-icon { width: 25px; height: 25px; display: grid; place-items: center; border-radius: 6px; background: var(--surface-raised); color: var(--secondary-accent); font-size: 17px; }
.metric > strong { display: block; font-size: clamp(21px,2.1vw,30px); font-weight: 650; letter-spacing: -.9px; line-height: 1.25; margin: 12px 0 10px; color: var(--ink); font-variant-numeric: tabular-nums; }
.metric small { font-size: 10px; }
.metric.positive .metric-icon { color: var(--green); background: var(--positive-soft); }
.metric.negative .metric-icon { color: var(--secondary-accent); background: var(--secondary-soft); }
.metric.balance { background: var(--accent-soft); border-color: var(--accent-border); }
.metric.balance > strong { color: var(--balance-ink); }
.metric.balance .metric-icon { color: var(--accent); background: var(--accent-soft); }
.positive { color: var(--green); }
.negative { color: var(--red); }
.panel { background: var(--surface); border: 1px solid var(--line); border-radius: 10px; overflow: hidden; min-width: 0; }
.panel-head { display: flex; justify-content: space-between; gap: 12px; align-items: center; padding: 21px 22px 18px; }
.panel-head p { margin: 7px 0 0; color: var(--muted); font-size: 10px; line-height: 1.6; }
.panel-chip { border: 1px solid var(--line); background: var(--surface-raised); border-radius: 5px; padding: 5px 8px; color: var(--text-secondary); font-size: 9px; white-space: nowrap; }
.analytics-grid { display: grid; grid-template-columns: minmax(0,1.8fr) minmax(260px,1fr); gap: 18px; align-items: start; margin-bottom: 18px; }
.detail-grid { display: grid; grid-template-columns: minmax(0,1.2fr) minmax(0,1fr); gap: 18px; margin-bottom: 22px; }
.evolution-panel { align-self: stretch; display: flex; flex-direction: column; }
.chart-legend { display: flex; align-items: center; gap: 18px; padding: 0 22px 6px; font-size: 10px; color: var(--text-secondary); }
.chart-legend > span::before { content: ''; width: 7px; height: 7px; border-radius: 50%; background: var(--green); display: inline-block; margin-right: 7px; }
.chart-legend .series-expense::before { background: var(--accent); }
.chart-legend small { font-size: 9px; margin-left: auto; }
.timeline-wrap { position: relative; margin: auto 8px 0; }
.timeline-svg { width: 100%; height: auto; min-height: 190px; display: block; }
.chart-gridline { stroke: var(--chart-grid); stroke-width: .7; stroke-dasharray: 3 5; }
.chart-axis { fill: var(--muted); font-family: 'Segoe UI',sans-serif; font-size: 10px; }
.chart-no-data { position: absolute; inset: 20px 20px 40px 40px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; text-align: center; background: var(--empty-overlay); pointer-events: none; }
.chart-no-data strong { font-size: 12px; font-weight: 550; color: var(--text-secondary); }
.chart-no-data span { font-size: 10px; color: var(--muted); }
.chart-data { margin: 0 22px 14px; }
.chart-data summary { color: var(--text-secondary); font-size: 9px; cursor: pointer; width: fit-content; }
.chart-data[open] summary { margin-bottom: 12px; }
.chart-data td, .chart-data th { padding: 9px; font-size: 10px; }
.chart-footer { display: flex; justify-content: space-between; align-items: center; gap: 15px; padding: 17px 22px; border-top: 1px solid var(--line-soft); color: var(--muted); font-size: 10px; margin-top: auto; }
.chart-footer strong { font-size: 13px; font-variant-numeric: tabular-nums; margin-left: 10px; font-weight: 600; }
.chart-footer > span:last-child { font-size: 9px; }
.donut-visual { position: relative; width: 166px; height: 166px; margin: -6px auto 6px; }
.donut-svg { width: 100%; height: 100%; display: block; }
.donut-track { stroke: var(--chart-track); }
.donut-center { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; pointer-events: none; }
.donut-center strong { font-size: 29px; letter-spacing: -1px; font-weight: 600; }
.donut-center span { color: var(--muted); font-size: 9px; max-width: 85px; text-align: center; line-height: 1.5; }
.donut-legend { padding: 0 20px 14px; }
.donut-legend-item { display: flex; align-items: center; gap: 9px; width: 100%; border: 0; border-radius: 4px; padding: 8px 4px; background: transparent; color: var(--ink); text-align: left; font-size: 11px; }
button.donut-legend-item:hover { background: var(--surface-hover); }
.legend-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--tone); flex-shrink: 0; }
.legend-name { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.legend-name small { font-size: 9px; }
.donut-legend-item > strong { white-space: nowrap; font-size: 11px; font-weight: 550; font-variant-numeric: tabular-nums; }
.donut-empty { font-size: 10px; line-height: 1.8; color: var(--muted); text-align: center; max-width: 220px; margin: 3px auto 12px; }
.tone-0 { --tone: var(--chart-0); }
.tone-1 { --tone: var(--chart-1); }
.tone-2 { --tone: var(--chart-2); }
.tone-3 { --tone: var(--chart-3); }
.tone-4 { --tone: var(--chart-4); }
.tone-5 { --tone: var(--chart-5); }
.category-chart { padding: 0 22px 22px; max-height: 320px; overflow-y: auto; }
.category-bar { margin: 4px 0 19px; }
.category-bar:last-child { margin-bottom: 0; }
.category-bar > div { display: flex; align-items: center; justify-content: space-between; gap: 14px; font-size: 11px; }
.category-bar strong { font-size: 12px; white-space: nowrap; font-weight: 550; font-variant-numeric: tabular-nums; }
.category-bar small { font-size: 9px; }
progress { display: block; width: 100%; height: 6px; border: 0; border-radius: 3px; overflow: hidden; margin: 10px 0 6px; background: var(--chart-track); accent-color: var(--tone); }
progress::-webkit-progress-bar { background: var(--chart-track); }
progress::-webkit-progress-value { background: var(--tone); border-radius: 3px; }
progress::-moz-progress-bar { background: var(--tone); border-radius: 3px; }
.insight-heading-icon { color: var(--secondary-accent); font-size: 24px; }
.insights { padding: 0 22px 18px; }
.insight { display: flex; gap: 12px; padding: 13px 0; border-bottom: 1px solid var(--line-soft); }
.insight:first-child { padding-top: 0; }
.insight-mark { display: block; width: 5px; height: 24px; border-radius: 3px; background: var(--tone); flex-shrink: 0; margin-top: 3px; opacity: .85; }
.insight > div > span { display: block; font-size: 10px; color: var(--muted); margin-bottom: 5px; }
.insight strong { font-size: 13px; font-weight: 600; }
.insight p { font-size: 10px; color: var(--text-secondary); margin: 5px 0 0; line-height: 1.65; }
.insight-mini-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-top: 17px; }
.insight-mini-grid span { display: block; color: var(--muted); font-size: 10px; }
.insight-mini-grid strong { display: block; font-size: 18px; font-weight: 550; margin: 6px 0; font-variant-numeric: tabular-nums; }
.insight-mini-grid small { font-size: 9px; }
.insight-note { display: flex; align-items: start; gap: 9px; background: var(--accent-soft); padding: 11px 12px; border-radius: 5px; margin-top: 18px; }
.insight-note .status-dot { margin-top: 5px; }
.insight-note p { font-size: 10px; color: var(--text-secondary); line-height: 1.7; margin: 0; }
.insight-note strong { color: var(--ink); font-weight: 600; }
.notice { display: flex; align-items: center; gap: 14px; padding: 13px 17px; background: var(--notice-bg); border: 1px solid var(--notice-border); border-radius: 7px; margin-bottom: 20px; color: var(--notice-ink); font-size: 11px; line-height: 1.8; }
.table-scroll { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; text-align: left; font-size: 11px; }
th { padding: 12px 19px; border-block: 1px solid var(--line-soft); color: var(--text-secondary); background: var(--surface-raised); font-weight: 500; white-space: nowrap; font-size: 10px; }
td { padding: 15px 19px; border-bottom: 1px solid var(--line-soft); color: var(--text-secondary); vertical-align: middle; }
tbody tr:last-child td { border-bottom: 0; }
tbody tr:hover { background: var(--surface-hover); }
td strong { font-weight: 550; color: var(--ink); }
td small { font-size: 9px; margin-top: 4px; }
.number { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
td.positive { color: var(--green); }
td.negative { color: var(--red); }
.badge { display: inline-flex; align-items: center; gap: 5px; font-size: 9px; padding: 5px 7px; border-radius: 4px; color: var(--positive-ink); background: var(--positive-soft); white-space: nowrap; }
.badge::before { content: ''; width: 4px; height: 4px; background: currentColor; border-radius: 50%; }
.badge.pending { color: var(--secondary-ink); background: var(--secondary-soft); }
.badge.overdue { color: var(--danger-ink); background: var(--danger-soft); }
.table-actions { white-space: nowrap; }
.table-actions button { border: 1px solid var(--line); color: var(--text-secondary); background: var(--surface-raised); border-radius: 4px; font-size: 9px; padding: 5px 7px; margin: 2px; }
.table-actions button:hover { border-color: var(--border-hover); }
.table-actions button.danger { color: var(--danger-ink); background: var(--danger-soft); border-color: var(--danger-border); }
.filters { display: flex; gap: 11px; padding: 0 22px 19px; }
.filters input { flex: 2; }
.filters select { flex: 1; }
.summary-strip { padding: 14px 20px; display: flex; justify-content: space-between; gap: 20px; align-items: center; border-top: 1px solid var(--line); font-size: 11px; color: var(--muted); }
.summary-strip strong { margin-left: 7px; }
.summary-strip button { padding: 7px 11px; min-height: 30px; }
.empty { text-align: center; padding: 40px 22px; color: var(--muted); }
.empty strong { display: block; font-size: 12px; font-weight: 550; color: var(--text-secondary); margin-bottom: 10px; }
.empty p { font-size: 10px; line-height: 1.8; margin: 0; }
.empty-chart-symbol { display: block; font-size: 30px; color: var(--secondary-ink); margin-bottom: 14px; }
.account-item { display: flex; justify-content: space-between; align-items: center; padding: 16px 22px; border-top: 1px solid var(--line-soft); font-size: 12px; }
footer { display: flex; justify-content: space-between; padding-top: 25px; color: var(--muted); font-size: 9px; }
dialog { border: 1px solid var(--line); background: var(--surface); color: var(--ink); border-radius: 12px; padding: 0; width: 580px; max-width: calc(100% - 24px); max-height: 90vh; box-shadow: 0 25px 100px var(--shadow); }
dialog::backdrop { background: var(--overlay); backdrop-filter: blur(5px); }
.modal-heading { display: flex; justify-content: space-between; align-items: center; padding: 23px 26px; border-bottom: 1px solid var(--line); }
.modal-heading p { margin: 0 0 5px; }
.modal-heading h2 { font-size: 20px; }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; padding: 24px 26px 0; }
.form-grid label, .login-form label { display: flex; flex-direction: column; gap: 8px; font-size: 11px; font-weight: 550; color: var(--text-secondary); }
.form-grid .full { grid-column: 1/-1; }
.form-grid p { color: var(--muted); font-size: 12px; line-height: 1.8; }
.form-grid input[type=date] { width: 100%; }
.modal-footer { display: flex; justify-content: end; gap: 10px; padding: 19px 26px; border-top: 1px solid var(--line); margin-top: 20px; }
#form-error { padding: 0 26px; color: var(--red); font-size: 12px; line-height: 1.7; }
#toast { position: fixed; bottom: 25px; right: 25px; z-index: 100; color: var(--ink); background: var(--accent-soft); border: 1px solid var(--accent-border); box-shadow: 0 12px 40px var(--shadow); border-radius: 7px; padding: 15px 21px; font-size: 12px; max-width: calc(100% - 50px); }
.login-screen { min-height: 100vh; display: grid; grid-template-columns: 1.05fr 1fr; background: var(--bg); }
.login-story { display: flex; flex-direction: column; justify-content: space-between; padding: 46px 60px; background: var(--sidebar); border-right: 1px solid var(--accent-border); }
.login-story .brand { padding: 0; }
.login-story h1 { font-size: clamp(33px,3.6vw,53px); line-height: 1.2; letter-spacing: -1.4px; font-weight: 500; margin: 17px 0 25px; }
.login-story p { font-size: 14px; line-height: 1.9; color: var(--text-secondary); max-width: 390px; }
.login-story small { font-size: 10px; }
.login-form { padding: 35px; display: grid; place-items: center; }
.login-form form { width: 100%; max-width: 350px; }
.login-form h2 { font-size: 28px; margin: 9px 0 12px; }
.login-form p { color: var(--muted); font-size: 12px; margin-bottom: 28px; }
.login-form label { margin: 20px 0; }
.login-form input { padding: 13px; }
.login-form .primary { width: 100%; padding: 14px; margin-top: 4px; }
.login-form small { font-size: 10px; text-align: center; margin-top: 24px; }
.login-form #login-error { color: var(--red); margin-bottom: 15px; }
.ledger-art { display: grid; grid-template-columns: 75px 1fr 1fr 1fr; max-width: 360px; align-items: center; gap: 14px; margin-top: 38px; color: var(--text-secondary); font-size: 11px; }
.ledger-art i { height: 27px; display: block; border-top: 2px solid var(--accent); background: var(--accent-faint); border-radius: 3px; }
.ledger-art i:nth-child(3) { height: 45px; }
.ledger-art i:nth-child(4) { height: 65px; }
.ledger-art i:nth-last-child(1), .ledger-art i:nth-last-child(2) { background: var(--secondary-faint); border-color: var(--secondary-accent); height: 30px; }
#boot-error { max-width: 650px; padding: 65px; }
#boot-error p { color: var(--muted); line-height: 1.8; }
@media(min-width:1500px) {
 main { padding: 33px 43px 24px; }
 .metric { padding: 20px 22px; }
 .analytics-grid { grid-template-columns: minmax(0,2.1fr) minmax(300px,1fr); }
 .timeline-svg { max-height: 310px; }
}
@media(max-width:1150px) {
 .app { grid-template-columns: 205px minmax(0,1fr); }
 aside { padding-inline: 10px; }
 main { padding: 25px 23px; }
 .topbar { padding-inline: 23px; }
 .metrics { gap: 10px; }
 .metric { padding: 15px 14px; }
 .metric > strong { font-size: 24px; }
 .analytics-grid { grid-template-columns: minmax(0,1.65fr) minmax(240px,1fr); gap: 14px; }
 .panel-head { padding: 19px 17px 15px; }
 .evolution-panel .panel-head { flex-wrap: wrap; }
 .chart-legend { padding-inline: 17px; gap: 12px; }
 .chart-legend small { display: none; }
 .chart-footer { padding-inline: 17px; }
 .chart-footer > span:last-child { display: none; }
 .detail-grid { gap: 14px; }
 .category-chart, .insights { padding-inline: 17px; }
 .timeline-svg { min-height: 220px; }
 td, th { padding: 13px; }
 .period-fields { gap: 9px; }
 .period-fields #sector-filter { width: 165px; }
 input[type=date] { width: 135px; }
}
@media(max-width:900px) {
 .app { display: block; }
 aside { position: fixed; z-index: 30; width: 240px; transform: translateX(-100%); box-shadow: 12px 0 50px var(--shadow); transition: transform .18s; }
 aside.open { transform: translateX(0); }
 .topbar #menu { display: block; }
 #close-sidebar { display: block; margin-right: 5px; }
 .topbar { height: 60px; }
 .analytics-grid { grid-template-columns: minmax(0,1.65fr) minmax(235px,1fr); }
 .login-story { padding: 35px; }
 .login-story h1 { font-size: 36px; }
 .toolbar { flex-wrap: wrap; }
}
@media(max-width:650px) {
 main { padding: 23px 16px; }
 .topbar { padding-inline: 16px; }
 .topbar-right { font-size: 9px; }
 h1 { font-size: 27px; }
 .page-heading { align-items: start; gap: 12px; }
 .page-heading p:not(.subtle) { font-size: 11px; max-width: 235px; }
 .page-heading .primary { font-size: 10px; padding-inline: 10px; margin-top: 24px; }
 .metrics { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; margin-bottom: 16px; }
 .metric { padding: 15px; border-radius: 8px; }
 .metric > strong { font-size: 25px; margin-top: 10px; }
 .metric-label { font-size: 10px; }
 .metric-icon { width: 22px; height: 22px; }
 .metric small { font-size: 9px; }
 .analytics-grid, .detail-grid { grid-template-columns: minmax(0,1fr); gap: 16px; margin-bottom: 16px; }
 .evolution-panel .panel-head { flex-wrap: nowrap; }
 .evolution-panel .panel-chip { display: none; }
 .timeline-svg { min-height: 0; }
 .timeline-wrap { margin: 8px 6px 0; }
 .chart-axis { font-size: 11px; }
 .chart-footer { padding-block: 15px; }
 .donut-visual { margin-top: 0; width: 175px; height: 175px; }
 .distribution-panel { display: grid; grid-template-columns: 1fr 1.15fr; align-items: center; }
 .distribution-panel .panel-head { grid-column: 1/-1; padding-bottom: 9px; }
 .donut-legend { padding: 0 15px 15px 0; }
 .donut-legend-item { font-size: 10px; gap: 7px; }
 .donut-legend-item > strong { font-size: 10px; }
 .legend-name small { font-size: 8px; }
 .category-chart { max-height: 300px; padding-bottom: 20px; }
 .insights { padding-bottom: 18px; }
 .toolbar { gap: 12px; }
 .toolbar { display: grid; grid-template-columns: 1fr 1fr; }
 .period-fields { display: contents; }
 .period-fields label:first-child { width: 100%; }
 .period-fields label:first-child { grid-column: 1/-1; }
 .period-fields #sector-filter { width: 100%; }
 .period-fields input[type=date] { width: 100%; }
 .period-fields > span { display: none; }
 .period-fields > .secondary { grid-column: 1; }
 .toolbar > .secondary { margin: 0; width: 100%; grid-column: 2; }
 .filters { flex-wrap: wrap; padding-inline: 16px; }
 .filters input { flex-basis: 100%; }
 .filters select { flex-basis: 40%; }
 .summary-strip { flex-wrap: wrap; gap: 13px; }
 .form-grid { gap: 16px; }
 footer { font-size: 9px; }
 footer span { display: none; }
 .login-screen { grid-template-columns: 1fr; }
 .login-story { min-height: 235px; padding: 28px; border-right: 0; border-bottom: 1px solid var(--line); }
 .login-story h1 { font-size: 32px; margin-bottom: 0; }
 .login-story .brand > span { font-size: 27px; }
 .login-story > div > p, .login-story small, .ledger-art, .login-story .subtle { display: none; }
 .login-form { padding: 35px 27px; }
}
@media(max-width:400px) {
 .metric > strong { font-size: 22px; }
 .metric { padding-inline: 12px; }
 .metric-icon { display: none; }
 .page-heading .primary { font-size: 9px; padding-inline: 8px; }
 .period-fields .secondary { padding-inline: 10px; }
 .donut-visual { width: 145px; height: 145px; }
 .donut-center strong { font-size: 25px; }
 .donut-legend-item { flex-wrap: wrap; }
 .donut-legend-item > strong { padding-left: 14px; }
 .form-grid { grid-template-columns: 1fr; }
 .form-grid .full { grid-column: auto; }
 .chart-no-data strong { font-size: 10px; }
 .chart-no-data span { font-size: 9px; }
}
@media(prefers-reduced-motion:reduce) { * { transition: none !important; scroll-behavior: auto !important; } }
@media(min-width:651px) and (max-width:780px) { .metrics { grid-template-columns: repeat(2,minmax(0,1fr)); } }

.theme-toggle { display:inline-flex; align-items:center; justify-content:center; gap:8px; border:1px solid var(--line); color:var(--text-secondary); background:var(--surface); padding:8px 11px; min-height:34px; border-radius:6px; font-size:10px; white-space:nowrap; cursor:pointer; }
.theme-toggle:hover { border-color:var(--accent-border); color:var(--accent); background:var(--accent-soft); }
.theme-toggle svg { width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.login-theme-toggle { position:absolute; top:25px; right:28px; z-index:2; }
@media(max-width:650px) { .topbar { gap:10px; } .topbar-right { display:none; } .topbar .theme-toggle { margin-left:auto; } .login-theme-toggle { top:20px; right:20px; } .login-theme-toggle span { display:none; } }


.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.uniao-brand{padding:0;gap:10px;letter-spacing:-.3px}.uniao-brand>img{display:block;width:49px;height:42px;object-fit:contain;border-radius:5px;background:#c00000}.uniao-brand>span{font-size:19px;line-height:1.3}.uniao-brand small{font-size:9px;letter-spacing:0;margin-top:3px}
.sidebar-brand-row{margin:1px 6px 24px}.sidebar-help{margin-top:auto;padding:30px 11px 18px;color:var(--muted);font-size:9px;display:flex;gap:8px;align-items:center}.sidebar-bottom{margin-top:0}
.finance-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.finance-metrics .metric{padding-block:22px}.finance-metrics .metric>strong{font-size:clamp(24px,2.4vw,34px)}
.onboarding{display:flex;justify-content:space-between;align-items:center;gap:20px;background:var(--accent-soft);border:1px solid var(--accent-border);border-radius:8px;padding:18px 20px;margin-bottom:22px}.onboarding strong{font-size:13px}.onboarding p{font-size:11px;color:var(--text-secondary);margin:7px 0 0;line-height:1.7}
.pagination{display:inline-flex;align-items:center;gap:10px;font-size:10px;white-space:nowrap}.access-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}.access-stats>div{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:18px}.access-stats span{display:block;font-size:11px;color:var(--muted)}.access-stats strong{display:block;font-size:29px;color:var(--accent);margin-top:9px;font-weight:600}.access-guide{background:var(--surface-raised);border:1px solid var(--line);border-radius:8px;padding:17px 20px;margin-bottom:20px}.access-guide>strong{font-size:12px}.access-guide p{font-size:11px;line-height:1.9;color:var(--text-secondary);margin:8px 0 0}.form-hint{padding:10px 12px;border-radius:5px;background:var(--accent-soft);margin:0}.form-grid label:has(select[name=category_id]){grid-column:1/-1}
.uniao-story{position:relative;isolation:isolate;overflow:hidden;background:#c00000;color:#fff;border-right:0;padding:36px 55px}.login-brand-caption{font-size:12px;color:#fff;opacity:.84;letter-spacing:.2px;position:relative;z-index:1}.login-identity{position:relative;z-index:1;margin:25px 0;max-width:440px}.uniao-logo-frame{width:min(330px,100%);margin:0 0 12px;border:1px solid #ffffff24;border-radius:12px;overflow:hidden;box-shadow:0 18px 70px #65000032;background:#c00000;animation:brandFloat 7s ease-in-out infinite}.uniao-logo-frame img{display:block;width:100%;height:auto}.uniao-story h1{font-size:clamp(29px,3.1vw,43px);line-height:1.17;font-weight:500;letter-spacing:-1px;margin:23px 0 18px}.uniao-story .login-identity p{display:block;color:#ffe4e4;font-size:13px;line-height:1.9;max-width:340px}.uniao-story>small{color:#ffe4e4;font-size:10px;z-index:1;position:relative}.login-orbit{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden}.login-orbit>span{position:absolute;width:560px;height:560px;border:1px solid #ffffff1b;border-radius:50%;top:80px;left:60px;animation:orbitDrift 16s ease-in-out infinite alternate}.login-orbit>span+span{width:780px;height:780px;top:-40px;left:-50px;animation-delay:-8s;opacity:.7}.login-orbit svg{position:absolute;width:420px;right:-190px;bottom:40px;fill:none;stroke:#ffffff13;stroke-width:1.4;stroke-dasharray:8 12;animation:shieldTrace 24s linear infinite}.login-form h2{font-size:30px}.login-form .primary{position:relative;overflow:hidden;transition:background .15s,box-shadow .15s}.login-form .primary:hover{box-shadow:0 7px 24px #c0000030}.login-form form{animation:formEnter .5s ease both}.login-theme-toggle{z-index:3}
.installation-page{min-height:100vh;display:grid;place-items:start center;background:var(--bg)}.installation-card{width:min(540px,calc(100% - 32px));margin:35px auto;padding:30px;background:var(--surface);border:1px solid var(--line);border-radius:12px}.install-logo{display:block;width:130px;height:auto;border-radius:7px;margin:0 0 22px}.installation-card h1{font-size:25px}.installation-card>p{font-size:12px;line-height:1.8;color:var(--muted)}.installation-card label{display:flex;flex-direction:column;gap:7px;margin:16px 0;font-size:12px;color:var(--text-secondary)}.installation-card .primary{margin-top:10px;width:100%}.installation-message{background:var(--accent-soft);border:1px solid var(--accent-border);padding:12px;border-radius:6px}.install-back{display:block;margin-top:22px;color:var(--accent);font-size:12px}
.dashboard-enter .metric{animation:panelEnter .4s ease both}.dashboard-enter .metric:nth-child(2){animation-delay:.05s}.dashboard-enter .metric:nth-child(3){animation-delay:.1s}.dashboard-enter .timeline-svg polyline{stroke-dasharray:1;animation:lineDraw .9s ease both}.dashboard-enter .donut-svg{animation:donutEnter .7s ease both}.dashboard-enter .insight-mark{animation:insightReveal .6s ease both}
@keyframes brandFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes orbitDrift{from{transform:translate(-8px,-8px) scale(.98)}to{transform:translate(15px,12px) scale(1.04)}}@keyframes shieldTrace{to{stroke-dashoffset:-200}}@keyframes formEnter{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}@keyframes panelEnter{from{opacity:.5;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes lineDraw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}@keyframes donutEnter{from{opacity:.35;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes insightReveal{from{transform:scaleY(.25)}to{transform:scaleY(1)}}
@media(max-width:1150px){.uniao-story{padding:35px}.uniao-brand>span{font-size:17px}.uniao-brand>img{width:42px}.uniao-brand{gap:8px}.sidebar-brand-row{margin-inline:3px}.finance-metrics .metric>strong{font-size:26px}}
@media(max-width:650px){.finance-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.finance-metrics .metric{padding:18px 14px}.finance-metrics .balance{grid-column:1/-1}.finance-metrics .metric>strong{font-size:25px}.onboarding{flex-direction:column;align-items:start;gap:14px}.access-stats{grid-template-columns:repeat(2,1fr);gap:10px}.uniao-story{padding:25px;min-height:290px}.login-brand-caption{font-size:10px;max-width:220px}.login-identity{display:grid;grid-template-columns:145px 1fr;gap:12px;align-items:center;max-width:none;margin:20px 0 5px}.uniao-logo-frame{width:145px;margin:0;grid-row:1/3;border-radius:8px}.uniao-story h1{font-size:22px;margin:0;letter-spacing:-.4px}.uniao-story .login-identity p{font-size:10px;line-height:1.7;margin:0}.uniao-story>small{display:none}.login-form h2{font-size:26px}.login-orbit>span{width:400px;height:400px;top:-80px}.uniao-story .login-orbit{display:block}.sidebar-help{padding-top:20px}.summary-strip .pagination{flex-basis:100%;justify-content:center}}
@media(max-width:380px){.login-identity{grid-template-columns:120px 1fr}.uniao-logo-frame{width:120px}.uniao-story h1{font-size:20px}.uniao-story{min-height:260px}.finance-metrics .metric>strong{font-size:22px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.dashboard-enter .timeline-svg polyline{stroke-dasharray:none;stroke-dashoffset:0}}
