.app{max-width:1100px;margin:0 auto;padding:1.5rem 1.5rem 4rem}.app-loading{color:var(--text-secondary);padding-top:3rem;text-align:center}.app-header{display:flex;align-items:center;gap:1.25rem;flex-wrap:wrap;border-bottom:1px solid var(--border);padding-bottom:1.1rem;margin-bottom:1.75rem}.app-header-onboarding{border-bottom:none}.brand{display:flex;align-items:center;gap:.55rem}.brand-logo{width:32px;height:32px;flex-shrink:0}.brand-name{font-size:1.35rem;font-weight:800;margin:0;color:var(--text-primary);letter-spacing:-.01em;white-space:nowrap}.brand-name-accent{color:var(--accent-strong)}.nav-tabs{display:flex;gap:.4rem;flex-wrap:wrap}.nav-tabs button{padding:.45rem .9rem;border:1px solid transparent;border-radius:999px;background:none;color:var(--text-secondary);font-size:.9rem;cursor:pointer;transition:background .15s,color .15s}.nav-tabs button:hover{background:var(--bg-surface-hover);color:var(--text-primary)}.nav-tabs button.active{background:var(--bg-surface-raised);border-color:var(--border-strong);color:var(--accent-strong);font-weight:600}.data-actions{margin-left:auto;display:flex;gap:.5rem}button{font:inherit;color:var(--text-primary)}.app button{cursor:pointer}.data-actions button,.form-actions button,.txn-form button[type=submit]{padding:.45rem .85rem;border-radius:8px;border:1px solid var(--border-strong);background:var(--bg-surface-raised);color:var(--text-primary);font-size:.85rem;cursor:pointer;transition:background .15s,border-color .15s}.data-actions button:hover,.form-actions button:hover{background:var(--bg-surface-hover);border-color:var(--accent)}.form-actions button[type=submit],.txn-form button[type=submit]{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.form-actions button[type=submit]:hover,.txn-form button[type=submit]:hover{background:var(--accent-strong);border-color:var(--accent-strong)}button.secondary{background:none;border:1px solid var(--border);color:var(--text-secondary)}button.secondary:hover{border-color:var(--accent);color:var(--text-primary)}button:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{font:inherit}.empty-state{color:var(--text-muted);font-style:italic}.error{color:var(--critical);font-size:.85rem}.type-tag{display:inline-block;padding:.1rem .5rem;border-radius:999px;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em}.type-tag-buy,.type-tag-stock{background:#199e702e;color:var(--accent-strong)}.type-tag-sell,.type-tag-crypto{background:#d03b3b29;color:#ec8b8b}.stale-badge{display:inline-block;margin-left:.4rem;padding:.05rem .4rem;border-radius:999px;background:#fab2192e;color:var(--warning);font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;vertical-align:middle}.prices-updated{margin:0 0 .75rem;font-size:.8rem;color:var(--text-secondary)}.price-banner{background:#fab2191a;border:1px solid rgba(250,178,25,.3);border-radius:10px;padding:.7rem 1rem;margin-bottom:1.25rem;font-size:.85rem;color:var(--text-secondary)}.price-banner p{margin:.15rem 0}.onboarding{max-width:560px}.onboarding h2{margin-top:0}.onboarding-intro{color:var(--text-secondary);line-height:1.5}.txn-form{display:flex;flex-direction:column;gap:.85rem;max-width:480px}.txn-form h2{margin:0}.txn-form label{display:flex;flex-direction:column;gap:.3rem;font-size:.82rem;color:var(--text-secondary)}.txn-form input,.txn-form select,.txn-form textarea{padding:.5rem .6rem;border:1px solid var(--border);border-radius:8px;background:var(--bg-surface);color:var(--text-primary);font:inherit}.txn-form input:focus,.txn-form select:focus,.txn-form textarea:focus{outline:none;border-color:var(--accent)}.form-actions{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.onboarding>.form-actions{margin-top:1.25rem}.save-confirm{color:var(--good);font-size:.85rem;font-weight:600}.settings-hint{color:var(--text-muted);font-size:.82rem}.settings,.manage-holdings{display:flex;flex-direction:column;gap:1.25rem;max-width:640px}.manage-holdings h2{margin-top:0}.category-list{list-style:none;padding:0;display:flex;flex-direction:column;gap:.4rem;margin:1rem 0}.category-row{display:flex;align-items:center;gap:.5rem;background:var(--bg-surface);border:1px solid var(--border);border-radius:8px;padding:.55rem .8rem}.category-name{font-weight:600}.category-count{color:var(--text-muted);font-size:.8rem}.category-actions{margin-left:auto;display:flex;gap:.4rem}.ledger-controls{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.25rem;align-items:center}.ledger-controls select{padding:.45rem .6rem;border-radius:8px;border:1px solid var(--border);background:var(--bg-surface);color:var(--text-primary);font-size:.85rem}.table-scroll{overflow-x:auto}.ledger-table{width:100%;min-width:640px;border-collapse:collapse;font-size:.88rem}.ledger-table th,.ledger-table td{padding:.55rem .6rem;border-bottom:1px solid var(--border);text-align:left}.ledger-table th.sortable{cursor:pointer;color:var(--text-secondary);-webkit-user-select:none;user-select:none}.ledger-table th.sortable:hover{color:var(--text-primary)}.ledger-amount-col{text-align:right;font-variant-numeric:tabular-nums}.ledger-amount-expense{color:#ec8b8b}.ledger-amount-income{color:#6fd66f}.dashboard{display:flex;flex-direction:column;gap:1.75rem}.stats-summary{display:flex;flex-wrap:wrap;gap:.75rem}.stat-tile{display:flex;flex-direction:column;gap:.15rem;background:var(--bg-surface);border:1px solid var(--border);border-radius:10px;padding:.75rem 1.1rem;min-width:150px}.stat-value{font-size:1.5rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--text-primary)}.stat-value-good{color:var(--good)}.stat-value-critical{color:var(--critical)}.stat-label{font-size:.78rem;color:var(--text-secondary)}.stats-charts-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.25rem}.chart-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:12px;padding:1.1rem 1.25rem 1.25rem}.chart-card h3{font-weight:600;font-size:1.02rem;margin:0 0 .9rem;color:var(--text-primary)}.chart-card-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.75rem;margin-bottom:.9rem}.chart-card-header h3{margin:0}.accounts-view{display:flex;flex-direction:column;gap:1.25rem}.account-total{font-weight:400;color:var(--text-secondary);font-size:.85rem}.target-input{width:5.5rem;padding:.3rem .45rem;border-radius:6px;border:1px solid var(--border);background:var(--bg-surface-raised);color:var(--text-primary);font:inherit;text-align:right}.variance-badge{display:inline-block;padding:.1rem .5rem;border-radius:999px;font-size:.8rem;font-weight:600;font-variant-numeric:tabular-nums}.variance-green{background:#0ca30c29;color:var(--good)}.variance-yellow{background:#fab2192e;color:var(--warning)}.variance-red{background:#d03b3b29;color:#ec8b8b}.range-toggle{display:flex;gap:.3rem}.range-toggle button{padding:.3rem .65rem;border-radius:999px;border:1px solid var(--border);background:var(--bg-surface-raised);color:var(--text-secondary);font-size:.76rem;cursor:pointer}.range-toggle button:hover{border-color:var(--accent)}.range-toggle button.active{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.hbar-chart{display:flex;flex-direction:column;gap:.5rem}.hbar-row{display:grid;grid-template-columns:140px 1fr 8ch;align-items:center;gap:.6rem;font-size:.85rem}.hbar-label{color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hbar-track{background:var(--bg-surface-raised);border-radius:5px;height:12px;overflow:hidden}.hbar-fill{display:block;height:100%;border-radius:5px;transition:opacity .15s}.hbar-value{text-align:right;color:var(--text-primary);font-variant-numeric:tabular-nums}.pie-chart{position:relative;display:flex;flex-direction:column;align-items:center;gap:.9rem}.pie-chart-svg{width:100%;max-width:200px}.pie-slice{stroke:var(--bg-surface);stroke-width:3;transition:opacity .15s}.pie-chart:hover .pie-slice{opacity:.55}.pie-slice-active,.pie-chart:hover .pie-slice-active{opacity:1}.pie-center-value{fill:var(--accent-strong);font-size:22px;font-weight:700;font-family:system-ui,sans-serif}.pie-center-label{fill:var(--text-secondary);font-size:10px;font-family:system-ui,sans-serif;text-transform:uppercase;letter-spacing:.04em}.chart-legend{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:.4rem .9rem;justify-content:center;width:100%}.chart-legend li{display:flex;align-items:center;gap:.35rem;font-size:.78rem;color:var(--text-secondary);cursor:default}.chart-legend li.active{color:var(--text-primary)}.legend-swatch{width:10px;height:10px;border-radius:3px;flex-shrink:0}.legend-count{color:var(--text-muted)}.line-chart{position:relative}.line-chart-svg{width:100%;height:auto}.line-chart-grid{stroke:var(--border);stroke-width:1}.line-chart-tick{fill:var(--text-muted);font-size:9px;font-family:system-ui,sans-serif}.line-chart-end-label{fill:var(--accent-strong);font-size:11px;font-weight:700;font-family:system-ui,sans-serif}.line-chart-crosshair{stroke:var(--border-strong);stroke-width:1;stroke-dasharray:3 3}.chart-tooltip{position:absolute;transform:translate(-50%,-110%);background:var(--bg-surface-raised);border:1px solid var(--border-strong);border-radius:8px;padding:.4rem .6rem;font-size:.8rem;color:var(--text-primary);white-space:nowrap;pointer-events:none;box-shadow:0 4px 14px #00000059;z-index:5}.chart-tooltip-sub{color:var(--text-secondary);font-size:.72rem}@media (max-width: 480px){.app{padding:1.1rem .85rem 2.5rem}.data-actions{margin-left:0;width:100%}.data-actions button{flex:1 1 auto}}:root{color-scheme:dark;--bg-page: #0d0d0d;--bg-surface: #1a1a19;--bg-surface-raised: #242422;--bg-surface-hover: #2c2c2a;--text-primary: #ffffff;--text-secondary: #c3c2b7;--text-muted: #898781;--border: rgba(255, 255, 255, .1);--border-strong: rgba(255, 255, 255, .18);--accent: #199e70;--accent-strong: #1baf7a;--good: #0ca30c;--warning: #fab219;--critical: #d03b3b}*{box-sizing:border-box}body{margin:0;background:var(--bg-page);color:var(--text-primary);font-family:system-ui,-apple-system,Segoe UI,sans-serif}
