:root{--accent: #0066cc;--accent-hover: #0071e3;--accent-on-dark: #2997ff;--ink: #1d1d1f;--body: #1d1d1f;--body-muted: #7a7a7a;--hairline: #e0e0e0;--divider: #f0f0f0;--canvas: #ffffff;--parchment: #ffffff;--pearl: #fafafc;--bg: #ffffff;--nav-bg: rgba(255,255,255,.8);--positive: #30c27c;--positive-dim: rgba(48,194,124,.12);--negative: #ff4540;--negative-dim: rgba(255,69,64,.1);--warn: #ff9f0a;--warn-dim: rgba(255,159,10,.14);--ok-strong: #157a3f;--warn-strong: #8a5a00;--bad-strong: #c0271d}@media (prefers-color-scheme: dark){:root{--accent: #2997ff;--accent-hover: #40a9ff;--ink: #f5f5f7;--body: #e5e5e7;--body-muted: #86868b;--hairline: #424245;--divider: #363638;--canvas: #000000;--parchment: #000000;--pearl: #1d1d1f;--bg: #000000;--nav-bg: rgba(0,0,0,.8);--positive: #30c27c;--negative: #ff4540;--warn: #ffb340;--warn-dim: rgba(255,179,64,.16);--ok-strong: #4dd88a;--warn-strong: #ffb340;--bad-strong: #ff6b66}}html.dark{--accent: #2997ff;--accent-hover: #40a9ff;--ink: #f5f5f7;--body: #e5e5e7;--body-muted: #86868b;--hairline: #424245;--divider: #363638;--canvas: #000000;--parchment: #000000;--pearl: #1d1d1f;--bg: #000000;--nav-bg: rgba(0,0,0,.8);--positive: #30c27c;--negative: #ff4540;--warn: #ffb340;--warn-dim: rgba(255,179,64,.16);--ok-strong: #4dd88a;--warn-strong: #ffb340;--bad-strong: #ff6b66}html.light{--warn: #ff9f0a;--warn-dim: rgba(255,159,10,.14);--ok-strong: #157a3f;--warn-strong: #8a5a00;--bad-strong: #c0271d;--accent: #0066cc;--accent-hover: #0071e3;--ink: #1d1d1f;--body: #1d1d1f;--body-muted: #7a7a7a;--hairline: #e0e0e0;--divider: #f0f0f0;--canvas: #ffffff;--parchment: #ffffff;--pearl: #fafafc;--bg: #ffffff;--nav-bg: rgba(255,255,255,.8);--positive: #30c27c;--negative: #ff4540}:root{--auth-bg: #f5f5f7;--auth-card: #ffffff;--auth-field: #f4f4f6;--auth-shadow: 0 12px 40px rgba(0,0,0,.1), 0 2px 8px rgba(0,0,0,.05)}@media (prefers-color-scheme: dark){:root{--auth-bg: #000000;--auth-card: #1c1c1e;--auth-field: #2c2c2e;--auth-shadow: 0 12px 40px rgba(0,0,0,.55)}}html.dark{--auth-bg: #000000;--auth-card: #1c1c1e;--auth-field: #2c2c2e;--auth-shadow: 0 12px 40px rgba(0,0,0,.55)}html.light{--auth-bg: #f5f5f7;--auth-card: #ffffff;--auth-field: #f4f4f6;--auth-shadow: 0 12px 40px rgba(0,0,0,.1), 0 2px 8px rgba(0,0,0,.05)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:SF Pro Text,SF Pro Display,-apple-system,BlinkMacSystemFont,system-ui,sans-serif;background:var(--bg);color:var(--body);line-height:1.47059;letter-spacing:-.022em}.nav-wrap{position:sticky;top:0;z-index:50;background:var(--nav-bg);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid var(--hairline)}.nav-inner{max-width:1040px;margin:0 auto;padding:0 20px;display:flex;align-items:center;height:48px;gap:14px}.nav-inner h1{font-family:SF Pro Display,system-ui,sans-serif;font-size:17px;font-weight:700;color:var(--ink);letter-spacing:-.022em;white-space:nowrap}.nav-links-wrap{position:relative;min-width:0;flex:1}.nav-links{display:flex;gap:1px;overflow-x:auto;-webkit-overflow-scrolling:touch;align-items:center;scrollbar-width:none}.nav-links::-webkit-scrollbar{display:none}.nav-link-icon{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;vertical-align:-2px;margin-right:2px;flex-shrink:0}.nav-links a{text-decoration:none;font-size:11px;font-weight:400;color:var(--body-muted);padding:5px 8px;border-radius:9999px;cursor:pointer;transition:all .15s;white-space:nowrap;letter-spacing:-.01em}.nav-links a:hover{color:var(--ink);background:var(--pearl)}.nav-links a.active{color:var(--canvas);background:var(--accent)}.nav-fade{position:absolute;top:0;bottom:0;width:22px;display:flex;align-items:center;pointer-events:none;opacity:0;transition:opacity .2s;z-index:1;color:var(--body-muted)}.nav-fade.visible{opacity:1}.nav-fade-left{left:0;justify-content:flex-start;background:linear-gradient(to right,var(--nav-bg) 40%,transparent)}.nav-fade-right{right:0;justify-content:flex-end;background:linear-gradient(to left,var(--nav-bg) 40%,transparent)}.nav-fade svg{width:12px;height:12px}.theme-btn{background:none;border:1px solid var(--hairline);border-radius:9999px;width:32px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;margin-left:auto;transition:border-color .15s;color:var(--body-muted)}.theme-btn:hover{border-color:var(--accent);color:var(--accent)}.theme-btn svg{width:16px;height:16px;fill:currentColor}.auth-screen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:none;align-items:center;justify-content:center;background:var(--auth-bg);padding:24px}.auth-screen.active{display:flex}.login-card{width:360px;max-width:100%;padding:44px 36px 32px;border:1px solid var(--hairline);border-radius:24px;background:var(--auth-card);box-shadow:var(--auth-shadow);text-align:center}.login-mark{width:44px;height:44px;border-radius:14px;background:var(--accent);display:flex;align-items:center;justify-content:center;margin:0 auto 20px;color:#fff;font-family:SF Pro Display,system-ui,sans-serif;font-size:22px;font-weight:600;letter-spacing:-.02em}.login-title{font-family:SF Pro Display,system-ui,sans-serif;font-size:24px;font-weight:600;color:var(--ink);letter-spacing:-.022em;line-height:1.2;margin-bottom:4px}.login-subtitle{font-size:14px;color:var(--body-muted);letter-spacing:-.01em;margin-bottom:28px}.login-form{display:flex;flex-direction:column;gap:12px}.login-form input{font-family:inherit;font-size:15px;width:100%;padding:13px 16px;border:1px solid transparent;border-radius:12px;background:var(--auth-field);color:var(--body);outline:none;text-align:center;transition:border-color .2s,box-shadow .2s,background .2s;-webkit-appearance:none}.login-form input:focus{background:var(--auth-card);border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}.login-form input::placeholder{color:var(--body-muted);opacity:.7}.login-form button{font-family:inherit;font-size:15px;font-weight:500;letter-spacing:-.01em;width:100%;padding:13px;border:none;border-radius:12px;background:var(--accent);color:#fff;cursor:pointer;transition:opacity .2s,transform .15s;margin-top:4px}.login-form button:hover{opacity:.88}.login-form button:active{transform:scale(.97)}.login-form button:disabled{opacity:.35;cursor:default;transform:none}.login-error{font-size:13px;color:var(--negative);margin-top:16px;min-height:20px;font-weight:450}.login-footer{margin-top:20px;padding-top:20px;border-top:1px solid var(--divider);display:flex;justify-content:center;gap:24px;font-size:13px;flex-wrap:wrap}.login-footer a{color:var(--body-muted);cursor:pointer;text-decoration:none;transition:color .15s}.login-footer a:hover{color:var(--accent)}.wrap{max-width:980px;margin:0 auto;padding:0 24px}.section{display:none;padding:40px 0}.section.active{display:block}.section-header{margin-bottom:28px}.section-header h2{font-family:SF Pro Display,system-ui,sans-serif;font-size:27px;font-weight:600;color:var(--ink);letter-spacing:-.022em;line-height:1.18}.section-header p{font-size:15px;color:var(--body-muted);margin-top:4px}.controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:24px;padding:14px 18px;background:var(--pearl);border-radius:14px}.controls label{font-size:12px;color:var(--body-muted);font-weight:400;display:flex;align-items:center;gap:4px;letter-spacing:-.01em}.controls input,.controls select{font-family:inherit;font-size:12px;padding:5px 10px;border:1px solid var(--hairline);border-radius:8px;background:var(--canvas);color:var(--body);outline:none;width:110px;transition:border-color .15s}.controls input:focus,.controls select:focus{border-color:var(--accent)}.money-form{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}.money-form label{display:flex;flex-direction:column;gap:4px}.money-form label>span{font-size:11px;color:var(--body-muted);letter-spacing:-.01em}.money-form input,.money-form select{font-family:inherit;font-size:14px;padding:8px 10px;border:1px solid var(--hairline);border-radius:8px;background:var(--canvas);color:var(--body);outline:none;transition:border-color .15s;width:130px}.money-form input:focus,.money-form select:focus{border-color:var(--accent)}.money-desc{flex:1 1 200px}.money-desc input{width:100%}.money-sign{display:flex;gap:6px}@media (max-width: 640px){.money-form{gap:10px}.money-form label{flex:1 1 calc(50% - 5px)}.money-form input,.money-form select{width:100%}.money-sign{flex:1 1 100%}.money-sign .period-btn{flex:1}.money-desc{flex:1 1 100%}}.controls button,.money-actions button:not(.period-btn){font-family:inherit;font-size:14px;font-weight:400;letter-spacing:-.01em;padding:8px 18px;border:none;border-radius:9999px;background:var(--accent);color:#fff;cursor:pointer;transition:opacity .15s}.money-actions button:not(.period-btn):disabled{opacity:.6;cursor:default}.controls button:hover{opacity:.85}.controls button:active{transform:scale(.95)}.controls button:disabled{opacity:.4;cursor:default}.period-btn{font-family:inherit;font-size:12px;font-weight:500;letter-spacing:-.01em;padding:5px 14px;border:1px solid var(--hairline);border-radius:9999px;background:var(--canvas);color:var(--body-muted);cursor:pointer;transition:all .15s}.period-btn:hover{border-color:var(--accent);color:var(--accent)}.period-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}.data-section{background:var(--pearl);border-radius:14px;padding:24px;margin-bottom:16px}.data-section h3{font-size:17px;font-weight:600;color:var(--ink);margin-bottom:16px;letter-spacing:-.022em;line-height:1.23536}.data-section h3 small{font-weight:400;color:var(--body-muted);font-size:14px;margin-left:8px}.data-section-flat{padding:24px 0;margin-bottom:16px}.data-section-flat h3{font-size:17px;font-weight:600;color:var(--ink);margin-bottom:16px;letter-spacing:-.022em;line-height:1.23536}.data-section-flat h3 small{font-weight:400;color:var(--body-muted);font-size:14px;margin-left:8px}.data-section-flat .bar-track{background:var(--hairline)}.metrics{display:flex;gap:1px;border-radius:14px;overflow:hidden;margin-bottom:16px}.metric{flex:1;min-width:0;text-align:center;padding:20px 12px;background:var(--canvas)}.metric .value{font-family:SF Pro Display,system-ui,sans-serif;font-size:28px;font-weight:600;color:var(--ink);letter-spacing:-.022em;line-height:1.07143;font-variant-numeric:tabular-nums}.metric .value.positive{color:var(--positive)}.metric .value.negative{color:var(--negative)}.metric .label{font-size:12px;color:var(--body-muted);margin-top:4px;font-weight:400;letter-spacing:-.01em}table{width:100%;border-collapse:collapse;font-size:14px}thead th{text-align:left;font-weight:600;color:var(--body-muted);font-size:12px;letter-spacing:-.01em;padding:6px 8px 6px 0;border-bottom:1px solid var(--hairline)}tbody td{padding:10px 8px 10px 0;border-bottom:1px solid var(--divider);font-variant-numeric:tabular-nums}tbody tr:last-child td{border-bottom:none}tbody td:first-child{font-weight:500;color:var(--ink)}td.num{text-align:right}.bar-track{display:block;height:6px;background:var(--hairline);border-radius:3px;overflow:hidden}.bar-fill{display:block;height:100%;background:var(--accent);border-radius:3px;transition:width .5s ease}.clickable{cursor:pointer;transition:background .15s}.clickable:hover{background:var(--pearl)}.chart-wrap{width:100%}.chart-wrap svg{display:block}.legend{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}.legend-item{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--body-muted);cursor:pointer;padding:4px 10px;border-radius:9999px;transition:background .15s;-webkit-user-select:none;user-select:none;letter-spacing:-.01em}.legend-item:hover{background:var(--pearl)}.legend-item.dimmed{opacity:.3}.legend-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.forecast-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--divider)}.forecast-row:last-child{border:none}.forecast-label{width:90px;font-size:14px;font-weight:500;color:var(--ink);flex-shrink:0}.forecast-viz{flex:1;position:relative;height:28px;display:flex;align-items:center}.forecast-band{position:absolute;height:8px;border-radius:4px}.forecast-band.outer{opacity:.2}.forecast-band.inner{opacity:.1}.forecast-dot{position:absolute;width:10px;height:10px;border-radius:50%;transform:translate(-50%)}.forecast-nums{width:150px;text-align:right;flex-shrink:0;font-size:12px}.forecast-nums span{display:inline-block;min-width:55px;font-variant-numeric:tabular-nums}.invest-grid{display:flex;gap:1px;border-radius:14px;overflow:hidden;margin:16px 0}.invest-cell{flex:1;padding:20px 16px;background:var(--pearl);text-align:center}.invest-cell .stat-label{font-size:12px;color:var(--body-muted);letter-spacing:-.01em;margin-bottom:2px}.invest-cell .stat-value{font-family:SF Pro Display,system-ui,sans-serif;font-size:24px;font-weight:600;color:var(--ink);letter-spacing:-.022em;font-variant-numeric:tabular-nums}.invest-cell.primary{background:var(--accent)}.invest-cell.primary .stat-label{color:#ffffffb3}.invest-cell.primary .stat-value{color:#fff}.classify-grid{display:flex;flex-direction:column;gap:8px}.classify-row{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--pearl);border-radius:14px;transition:background .15s}.classify-row:hover{background:var(--divider)}.classify-row .name{flex:1;font-size:14px;font-weight:500;color:var(--ink);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.classify-row .name:hover{color:var(--accent)}.classify-row .count{font-size:12px;color:var(--body-muted);white-space:nowrap;letter-spacing:-.01em}.classify-row .total{font-size:14px;color:var(--body);font-variant-numeric:tabular-nums;white-space:nowrap;min-width:80px;text-align:right}.classify-row select{font-family:inherit;font-size:12px;padding:4px 8px;border:1px solid var(--hairline);border-radius:8px;background:var(--canvas);color:var(--body);outline:none;width:120px;transition:border-color .15s}.classify-row select:focus{border-color:var(--accent)}.classify-row .status{font-size:11px;color:var(--body-muted);min-width:80px;text-align:right;letter-spacing:-.01em}.badge{display:inline-block;font-size:10px;padding:2px 8px;border-radius:9999px;font-weight:500;letter-spacing:-.01em}.badge-manual{background:#30c27c1f;color:var(--positive)}.badge-rule{background:#0066cc1a;color:var(--accent)}.badge-llm{background:#8250dc1a;color:#8250dc}.badge-empty{background:var(--hairline);color:var(--body-muted)}.badge-warn{background:var(--warn-dim);color:var(--warn-strong)}.ess.ess-essencial{color:var(--ok-strong);font-weight:500}.ess.ess-importante{color:var(--warn-strong);font-weight:500}.ess.ess-superfluo{color:var(--bad-strong);font-weight:500}.cat-chips{display:flex;flex-wrap:wrap;gap:8px}.cat-chip{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--body);letter-spacing:-.01em;padding:5px 6px 5px 12px;border-radius:9999px;background:var(--canvas);border:1px solid var(--hairline)}.cat-chip.fallback{padding-right:12px;color:var(--body-muted)}.cat-chip-x{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border:none;border-radius:50%;background:transparent;color:var(--body-muted);cursor:pointer;font-size:15px;line-height:1;transition:background .15s,color .15s}.cat-chip-x:hover{background:var(--negative-dim);color:var(--negative)}.detail-inner{padding:8px 0 16px 24px}.detail-inner p{font-size:12px;color:var(--body-muted);margin-bottom:6px;letter-spacing:-.01em}.detail-table{width:100%;font-size:12px}.detail-table th{font-size:10px;letter-spacing:.02em;color:var(--body-muted);padding:4px 8px;text-align:left;border-bottom:1px solid var(--hairline);text-transform:uppercase}.detail-table td{padding:5px 8px;border-bottom:1px solid var(--divider)}.detail-inner .data-section{margin:0}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:var(--ink);color:var(--canvas);padding:12px 24px;border-radius:9999px;font-size:14px;font-weight:500;letter-spacing:-.01em;opacity:0;transition:opacity .3s;pointer-events:none;z-index:100}.toast.show{opacity:1}.loading,.empty{text-align:center;padding:48px 0;color:var(--body-muted);font-size:14px;letter-spacing:-.01em}@media (max-width: 820px){.nav-inner{padding:0 12px;gap:10px;height:58px}.nav-links{gap:4px;scrollbar-width:none;padding:0 4px}.nav-links::-webkit-scrollbar{display:none}.nav-links a{padding:10px 14px;font-size:13px}.wrap{padding:0 16px}.section{padding:24px 0}.section-header h2{font-size:26px}.section-header p{font-size:15px}.controls input,.controls select,.controls label{width:100%}.controls button{width:100%;justify-content:center}.metrics{flex-wrap:wrap}.metric{min-width:45%;padding:14px 8px}.metric .value{font-size:22px}.metric .label{font-size:11px}.invest-grid{flex-direction:column}.forecast-nums{display:none}.forecast-label{width:70px;font-size:12px}.classify-row{flex-wrap:wrap;padding:12px}.classify-row .name{width:100%;margin-bottom:4px}.classify-row .total{min-width:auto}.classify-row select{width:110px}.data-section{padding:16px;border-radius:14px}.data-section-flat{padding:16px 0}.section-header{margin-bottom:20px}table{font-size:13px}thead th,tbody td{padding:8px 6px 8px 0}#im-dropzone{padding:32px 16px}}@media (max-width: 480px){.nav-inner{height:54px;gap:8px;padding:0 10px}.nav-inner h1{font-size:15px}.nav-links{gap:3px;padding:0 4px}.nav-links a{padding:9px 12px;font-size:13px}.wrap{padding:0 12px}.section-header h2{font-size:22px}.section-header{margin-bottom:16px}.metric{min-width:100%}.metric .value,.invest-cell .stat-value{font-size:20px}.forecast-row{gap:8px}.forecast-label{width:60px;font-size:11px}.period-btn{padding:8px 12px;font-size:13px}.controls{padding:12px;border-radius:14px}}
