:root{--color-primary: #6b446e;--color-primary-dark: #553658;--color-primary-hover: #825786;--color-primary-light: #b897bb;--color-primary-subtle: #f7f2f7;--color-text: #2d1e2e;--color-text-muted: #6b7280;--color-text-label: #374151;--color-text-faint: #9ca3af;--color-bg: #f5f6f8;--color-surface: #ffffff;--color-surface-hover: #f9fafb;--color-border: #e5e7eb;--color-border-medium: #d1d5db;--color-success: #059669;--color-success-dark: #065f46;--color-success-bg: #ecfdf5;--color-danger: #dc2626;--color-danger-dark: #991b1b;--color-danger-bg: #fef2f2;--color-info: #6b446e;--color-info-bg: #f7f2f7;--color-warning: #92400e;--color-warning-dark: #854d0e;--color-warning-bg: #fffbeb;--color-warning-border: #fde68a;--color-neutral-bg: #f3f4f6;--color-neutral: #374151;--color-interest: #166534;--color-interest-bg: #f0fdf4;--color-manual: #c2410c;--color-manual-bg: #fff7ed}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--color-bg);color:var(--color-text);min-height:100vh}.app{max-width:1200px;margin:0 auto;padding:20px}.app-header{display:flex;justify-content:space-between;align-items:center;padding:16px 0;margin-bottom:0}.app-header h1{font-size:24px;font-weight:700;color:var(--color-text);font-family:Quicksand,sans-serif;letter-spacing:-.3px}.app-header h1.brand-title{cursor:pointer;-webkit-user-select:none;user-select:none}.app-header h1 .brand-primary{color:var(--color-primary);font-weight:800}.app-header h1 .brand-neutral{color:var(--color-text-muted);font-weight:600}.header-actions{display:flex;gap:8px;align-items:center}.hamburger-btn{display:none;align-items:center;justify-content:center;width:36px;height:36px;border-radius:8px;border:1px solid var(--color-border-medium);background:none;color:var(--color-text-muted);cursor:pointer;transition:all .2s}.hamburger-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.loading{display:flex;justify-content:center;align-items:center;height:60vh;font-size:18px;color:var(--color-text-faint)}.tab-nav{display:flex;gap:0;border-bottom:2px solid var(--color-border);margin-bottom:24px}.tab-btn{padding:12px 24px;border:none;background:none;font-size:14px;font-weight:600;color:var(--color-text-muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .2s}.tab-btn:hover{color:var(--color-primary)}.tab-btn.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.btn{padding:10px 20px;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-hover)}.btn-primary:disabled{background:var(--color-primary-light);cursor:not-allowed}.btn-secondary{background:var(--color-border);color:var(--color-text-label)}.btn-secondary:hover{background:var(--color-border-medium)}.btn-icon{padding:8px 12px;background:var(--color-border);border:none;border-radius:8px;cursor:pointer;font-size:16px;transition:all .2s;line-height:1}.btn-icon:hover{background:var(--color-border-medium)}.btn-icon.spinning{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.upload-container{max-width:600px;margin:60px auto;text-align:center}.upload-container h2{font-size:20px;margin-bottom:8px}.upload-container p.subtitle{color:var(--color-text-faint);margin-bottom:32px}.upload-fields{display:flex;flex-direction:column;gap:16px;margin-bottom:24px}.file-input-group{text-align:left}.file-input-group label{display:block;font-weight:600;font-size:14px;margin-bottom:6px;color:var(--color-text-label)}.file-input-group input[type=file]{width:100%;padding:12px;border:2px dashed var(--color-border-medium);border-radius:8px;background:var(--color-surface);cursor:pointer}.file-input-group input[type=file]:hover{border-color:var(--color-primary)}.upload-status{margin-top:16px;padding:12px;border-radius:8px;font-size:14px}.upload-status.success{background:var(--color-success-bg);color:var(--color-success-dark)}.upload-status.error{background:var(--color-danger-bg);color:var(--color-danger-dark)}.dashboard{display:flex;flex-direction:column;gap:24px}.dashboard-header{display:flex;justify-content:space-between;align-items:center}.summary-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.summary-card{background:var(--color-surface);border-radius:12px;padding:20px;box-shadow:0 1px 3px #00000014}.summary-card .label{font-size:13px;color:var(--color-text-muted);font-weight:500;margin-bottom:4px}.summary-card .value{font-size:22px;font-weight:700}.summary-card .sub{font-size:13px;margin-top:2px;font-weight:600}.positive{color:var(--color-success)}.negative{color:var(--color-danger)}.period-filter{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.period-btn{padding:6px 16px;border:1px solid var(--color-border-medium);border-radius:20px;background:var(--color-surface);font-size:13px;font-weight:600;cursor:pointer;color:var(--color-text-label);transition:all .2s}.period-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.period-btn.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.chart-section{background:var(--color-surface);border-radius:12px;padding:24px;box-shadow:0 1px 3px #00000014}.chart-section h3{font-size:16px;font-weight:600;margin-bottom:16px;color:var(--color-text-label)}.chart-loading{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:16px;height:300px;color:var(--color-text-faint)}.chart-loading:before,.page-loading:before{content:"";width:36px;height:36px;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.data-table-container{background:var(--color-surface);border-radius:12px;padding:24px;box-shadow:0 1px 3px #00000014;overflow-x:auto}.data-table-container h3{font-size:16px;font-weight:600;margin-bottom:16px;color:var(--color-text-label)}.data-table{width:100%;border-collapse:collapse;font-size:13px}.data-table th{text-align:left;padding:10px 12px;border-bottom:2px solid var(--color-border);color:var(--color-text-muted);font-weight:600;white-space:nowrap}.data-table td{padding:10px 12px;border-bottom:1px solid var(--color-neutral-bg)}.data-table tr:hover{background:var(--color-surface-hover)}.data-table .num{text-align:right;font-variant-numeric:tabular-nums}.badge{display:inline-block;padding:2px 8px;border-radius:12px;font-size:11px;font-weight:600}.badge-buy{background:var(--color-success-bg);color:var(--color-success-dark)}.badge-sell{background:var(--color-danger-bg);color:var(--color-danger-dark)}.badge-deposit{background:var(--color-info-bg);color:var(--color-info)}.badge-dividend{background:var(--color-success-bg);color:var(--color-success-dark)}.badge-dividend_tax{background:var(--color-danger-bg);color:var(--color-danger-dark)}.badge-broker_fee,.badge-transaction_fee{background:#fefce8;color:var(--color-warning-dark)}.badge-interest{background:var(--color-interest-bg);color:var(--color-interest)}.badge-trade{background:var(--color-neutral-bg);color:var(--color-neutral)}.badge-manual{background:var(--color-manual-bg);color:var(--color-manual)}.badge-import{background:var(--color-neutral-bg);color:var(--color-text-faint)}.page-loading{display:flex;flex-direction:column;align-items:center;gap:16px;padding:60px;color:var(--color-text-faint)}.warnings-banner{background:var(--color-warning-bg);border:1px solid var(--color-warning-border);border-radius:8px;padding:12px 16px;display:flex;flex-direction:column;gap:4px}.warning-item{font-size:13px;color:var(--color-warning);display:flex;align-items:center;gap:8px}.warning-icon{font-size:14px;flex-shrink:0}.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--color-bg)}.login-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;padding:48px 40px;max-width:400px;width:100%;text-align:center;box-shadow:0 4px 24px #0000000f}.login-card h1{margin:0 0 8px;font-size:28px}.login-subtitle{color:var(--color-text-muted);margin:0 0 32px;font-size:15px}.login-input{width:100%;padding:12px 16px;border:1px solid var(--color-border-medium);border-radius:8px;font-size:15px;margin-bottom:16px;box-sizing:border-box;transition:border-color .2s}.login-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-subtle)}.login-btn{width:100%;padding:12px 16px;background:var(--color-primary);color:#fff;border:none;border-radius:8px;font-size:15px;font-weight:600;cursor:pointer;transition:background .2s}.login-btn:hover{background:var(--color-primary-hover)}.login-btn:disabled{background:var(--color-primary-light);cursor:not-allowed}.login-message{margin-top:20px;padding:12px;border-radius:8px;font-size:14px}.login-message.success{background:var(--color-success-bg);color:var(--color-success-dark)}.login-message.error{background:var(--color-error-bg);color:var(--color-error)}.user-menu{position:relative}.user-avatar{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--color-border-medium);background:none;color:var(--color-text-muted);cursor:pointer;transition:all .2s}.user-avatar:hover{border-color:var(--color-primary);color:var(--color-primary)}.user-dropdown{position:absolute;top:100%;right:0;margin-top:6px;background:#fff;border:1px solid var(--color-border);border-radius:10px;box-shadow:0 4px 16px #0000001f;min-width:220px;z-index:100;padding:6px}.user-email{padding:10px 12px;font-size:12px;color:var(--color-text-faint);border-bottom:1px solid var(--color-border);margin-bottom:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-profiles{border-bottom:1px solid var(--color-border);margin-bottom:4px;padding-bottom:4px}.dropdown-label{padding:6px 12px 2px;font-size:11px;font-weight:600;color:var(--color-text-faint);text-transform:uppercase;letter-spacing:.5px}.dropdown-item{display:flex;align-items:center;justify-content:space-between;width:100%;background:none;border:none;color:var(--color-text);padding:8px 12px;border-radius:6px;font-size:13px;cursor:pointer;text-align:left;transition:all .15s}.dropdown-item:hover{background:#f5f5f8}.dropdown-item.active{color:var(--color-primary);font-weight:600}.dropdown-item.logout{color:var(--color-text-muted);gap:8px;justify-content:flex-start}.dropdown-item.logout:hover{color:#d32f2f;background:#fef2f2}.mobile-nav{display:none}.desktop-nav{display:flex}@media(max-width:768px){.app{padding:12px}.app-header{padding:10px 0}.app-header h1{font-size:20px}.hamburger-btn{display:flex}.desktop-nav{display:none}.mobile-nav{display:flex;flex-direction:column;background:#fff;border:1px solid var(--color-border);border-radius:10px;box-shadow:0 4px 16px #0000001a;margin-bottom:16px;padding:4px;animation:slideDown .15s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.mobile-nav-item{display:block;width:100%;padding:12px 16px;border:none;background:none;font-size:15px;color:var(--color-text);text-align:left;border-radius:8px;cursor:pointer;transition:all .15s}.mobile-nav-item:hover{background:#f5f5f8}.mobile-nav-item.active{color:var(--color-primary);font-weight:600;background:#f0ebf8}.summary-cards{grid-template-columns:1fr;gap:12px}.summary-card{padding:16px}.summary-card .value{font-size:20px}.dashboard{gap:16px}.dashboard-header{flex-wrap:wrap;gap:8px}.period-filter{gap:6px}.period-btn{padding:5px 12px;font-size:12px}.chart-section{padding:16px 12px;border-radius:8px}.chart-section h3{font-size:15px;margin-bottom:12px}.data-table-container{padding:16px 12px;border-radius:8px}.data-table{font-size:12px}.data-table th,.data-table td{padding:8px}.upload-container{margin:24px auto;padding:0 8px}.login-card{padding:32px 24px;margin:0 16px;border-radius:10px}.login-card h1{font-size:24px}.warnings-banner{padding:10px 12px}.warning-item{font-size:12px}}
