:root{--bg: #f8fafc;--bg-card: #ffffff;--border: #e2e8f0;--text: #0f172a;--text-muted: #64748b;--color-income: #16a34a;--color-expense: #dc2626;--color-balance: #2563eb;--color-negative: #dc2626;--shadow: 0 1px 3px rgba(15, 23, 42, .06), 0 1px 2px rgba(15, 23, 42, .04);--radius: 12px}@media (prefers-color-scheme: dark){:root{--bg: #0b1220;--bg-card: #111a2e;--border: #1e293b;--text: #f1f5f9;--text-muted: #94a3b8;--shadow: 0 1px 3px rgba(0, 0, 0, .4)}}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0;font-weight:600}a{color:var(--color-balance);text-decoration:none}a:hover{text-decoration:underline}code{background:var(--border);padding:.1rem .4rem;border-radius:4px;font-size:.9em}.app{max-width:1280px;margin:0 auto;padding:2rem 1.5rem 4rem}.app-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem;margin-bottom:2rem}.app-header__title{display:flex;align-items:baseline;gap:1rem;flex-wrap:wrap}.app-header h1{font-size:1.5rem}.app-header__period{color:var(--text-muted);font-size:1rem;text-transform:capitalize}.app-footer{margin-top:2rem;text-align:right;color:var(--text-muted);font-size:.85rem}section{margin-bottom:2rem}.section-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:1.5rem}.section-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;box-shadow:var(--shadow)}.section-card h2{font-size:1rem;margin-bottom:1rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.period-selector{display:flex;gap:.5rem;align-items:center}.period-selector select{padding:.5rem .75rem;border:1px solid var(--border);border-radius:8px;background:var(--bg-card);color:var(--text);font-size:.95rem;cursor:pointer}.period-nav{width:36px;height:36px;border:1px solid var(--border);border-radius:8px;background:var(--bg-card);color:var(--text);font-size:1.25rem;cursor:pointer;display:flex;align-items:center;justify-content:center}.period-nav:hover{background:var(--border)}.balance-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem}.balance-card{background:var(--bg-card);border:1px solid var(--border);border-left:4px solid;border-radius:var(--radius);padding:1.25rem 1.5rem;box-shadow:var(--shadow)}.balance-card--income{border-left-color:var(--color-income)}.balance-card--expense{border-left-color:var(--color-expense)}.balance-card--balance{border-left-color:var(--color-balance)}.balance-card__label{color:var(--text-muted);font-size:.85rem;text-transform:uppercase;letter-spacing:.05em;margin-bottom:.5rem}.balance-card__value{font-size:2rem;font-weight:600;font-variant-numeric:tabular-nums;margin-bottom:.5rem}.balance-card__value--negative{color:var(--color-negative)}.delta{font-size:.85rem;font-variant-numeric:tabular-nums}.delta--up{color:var(--color-income)}.delta--down{color:var(--color-expense)}.delta--flat,.delta--neutral{color:var(--text-muted)}.category-grid{display:grid;grid-template-columns:1fr 1.2fr;gap:1rem;align-items:center}@media (max-width: 720px){.category-grid{grid-template-columns:1fr}}.color-swatch{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:.5rem;vertical-align:middle}table{width:100%;border-collapse:collapse;font-size:.9rem}th,td{text-align:left;padding:.6rem .75rem;border-bottom:1px solid var(--border)}th{color:var(--text-muted);font-weight:500;font-size:.8rem;text-transform:uppercase;letter-spacing:.05em}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}.expenses-table{overflow-x:auto}.truncate{max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.badge{display:inline-block;padding:.15rem .6rem;background:var(--border);border-radius:999px;font-size:.8rem}.status{display:inline-block;padding:.15rem .6rem;border-radius:999px;font-size:.8rem}.status--pendiente{background:#ca8a0426;color:#ca8a04}.status--pagada{background:#16a34a26;color:var(--color-income)}.status--contabilizada{background:#2563eb26;color:var(--color-balance)}.status--pendiente-revision{background:#dc262626;color:var(--color-expense)}.status--default{background:var(--border);color:var(--text-muted)}.loading,.empty-state{text-align:center;padding:3rem 1rem;color:var(--text-muted)}.error{background:#dc262614;border:1px solid rgba(220,38,38,.3);border-radius:var(--radius);padding:1rem 1.25rem;color:var(--color-expense)}.error__hint{margin-top:.5rem;color:var(--text-muted);font-size:.9rem}
