@charset "UTF-8";:root{--font-sans: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;--font-display: "Sora", var(--font-sans);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 20px;--transition: .15s ease;--transition-slow: .25s ease;--sidebar-width: 248px;--topbar-height: 56px;--brand: #2563eb;--brand-light: #eff6ff;--brand-dark: #1d4ed8}[data-theme=light],:root{--bg-base: #f8f9fb;--bg-surface: #ffffff;--bg-elevated: #ffffff;--bg-subtle: #f1f3f7;--bg-hover: #f5f7fa;--border: #e4e7ed;--border-strong: #c9cfd8;--text-primary: #0f172a;--text-secondary: #475569;--text-muted: #94a3b8;--sidebar-bg: #0f172a;--sidebar-text: rgba(255,255,255,.7);--sidebar-active:#ffffff;--sidebar-accent:#2563eb;--sidebar-hover: rgba(255,255,255,.06);--success: #16a34a;--success-bg: #f0fdf4;--warning: #d97706;--warning-bg: #fffbeb;--danger: #dc2626;--danger-bg: #fef2f2;--info: #2563eb;--info-bg: #eff6ff;--shadow-sm: 0 1px 3px rgba(0,0,0,.06), 0 1px 2px rgba(0,0,0,.04);--shadow-md: 0 4px 12px rgba(0,0,0,.08), 0 2px 4px rgba(0,0,0,.04);--shadow-lg: 0 10px 30px rgba(0,0,0,.1), 0 4px 8px rgba(0,0,0,.04)}[data-theme=dark]{--bg-base: #0d1117;--bg-surface: #161b22;--bg-elevated: #1c2230;--bg-subtle: #1e2533;--bg-hover: #232d3f;--border: #2a3444;--border-strong: #3d4e63;--text-primary: #e2e8f0;--text-secondary: #8b9ab0;--text-muted: #4f6076;--sidebar-bg: #0d1117;--sidebar-text: rgba(255,255,255,.55);--sidebar-active:#ffffff;--sidebar-accent:#3b82f6;--sidebar-hover: rgba(255,255,255,.05);--success: #22c55e;--success-bg: rgba(34,197,94,.1);--warning: #f59e0b;--warning-bg: rgba(245,158,11,.1);--danger: #ef4444;--danger-bg: rgba(239,68,68,.1);--info: #3b82f6;--info-bg: rgba(59,130,246,.1);--shadow-sm: 0 1px 3px rgba(0,0,0,.3);--shadow-md: 0 4px 12px rgba(0,0,0,.35);--shadow-lg: 0 10px 30px rgba(0,0,0,.4)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;height:100%}body{font-family:var(--font-sans);font-size:14px;line-height:1.6;color:var(--text-primary);background:var(--bg-base);height:100%;overflow:hidden;-webkit-font-smoothing:antialiased;transition:background var(--transition-slow),color var(--transition-slow)}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}img{max-width:100%;display:block}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:99px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}h1,h2,h3,h4,h5{font-family:var(--font-display);font-weight:600;line-height:1.3;color:var(--text-primary)}h1{font-size:28px}h2{font-size:22px}h3{font-size:18px}h4{font-size:15px;font-weight:500}h5{font-size:13px;font-weight:500}p{color:var(--text-secondary)}.app-layout{display:flex;height:100vh;overflow:hidden}.main-content{flex:1;display:flex;flex-direction:column;overflow:hidden;margin-left:var(--sidebar-width);transition:margin-left var(--transition-slow)}.main-content.sidebar-collapsed{margin-left:60px}.page-content{flex:1;overflow-y:auto;padding:var(--space-6)}.card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden;transition:box-shadow var(--transition)}.card:hover{box-shadow:var(--shadow-md)}.card .card-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border)}.card .card-header h4{margin:0;font-size:14px;font-weight:600}.card .card-body{padding:var(--space-5)}.stat-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-5)}.stat-card .stat-label{font-size:12px;font-weight:500;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--space-2)}.stat-card .stat-value{font-size:24px;font-weight:600;color:var(--text-primary);font-family:var(--font-display);line-height:1}.stat-card .stat-sub{font-size:12px;color:var(--text-muted);margin-top:var(--space-1)}.stat-card.success .stat-value{color:var(--success)}.stat-card.danger .stat-value{color:var(--danger)}.stat-card.warning .stat-value{color:var(--warning)}.stat-card.info .stat-value{color:var(--info)}.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--space-4);margin-bottom:var(--space-6)}.form-group{display:flex;flex-direction:column;gap:var(--space-1)}.form-group label{font-size:13px;font-weight:500;color:var(--text-secondary)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}.form-grid.cols-3{grid-template-columns:1fr 1fr 1fr}.form-grid.cols-1{grid-template-columns:1fr}input,select,textarea{font-family:var(--font-sans);font-size:14px;color:var(--text-primary);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:9px 12px;width:100%;outline:none;transition:border-color var(--transition),box-shadow var(--transition);appearance:none}input::placeholder,select::placeholder,textarea::placeholder{color:var(--text-muted)}input:focus,select:focus,textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px #2563eb1f}input:disabled,select:disabled,textarea:disabled{opacity:.5;cursor:not-allowed;background:var(--bg-subtle)}textarea{resize:vertical;min-height:90px;line-height:1.6}select{cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%2394a3b8' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:36px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);font-family:var(--font-sans);font-size:14px;font-weight:500;padding:9px 18px;border-radius:var(--radius-sm);border:1px solid transparent;cursor:pointer;transition:all var(--transition);white-space:nowrap;text-decoration:none}.btn:disabled{opacity:.55;cursor:not-allowed}.btn:active:not(:disabled){transform:scale(.98)}.btn.btn-primary{background:var(--brand);color:#fff;border-color:var(--brand-dark)}.btn.btn-primary:hover:not(:disabled){background:var(--brand-dark)}.btn.btn-secondary{background:var(--bg-surface);color:var(--text-primary);border-color:var(--border)}.btn.btn-secondary:hover:not(:disabled){background:var(--bg-hover);border-color:var(--border-strong)}.btn.btn-danger{background:var(--danger-bg);color:var(--danger);border-color:var(--danger)}.btn.btn-danger:hover:not(:disabled){background:var(--danger);color:#fff}.btn.btn-success{background:var(--success-bg);color:var(--success);border-color:var(--success)}.btn.btn-success:hover:not(:disabled){background:var(--success);color:#fff}.btn.btn-ghost{background:transparent;color:var(--text-secondary);border-color:transparent}.btn.btn-ghost:hover:not(:disabled){background:var(--bg-hover);color:var(--text-primary)}.btn.btn-sm{font-size:12px;padding:6px 12px}.btn.btn-lg{font-size:16px;padding:12px 24px}.btn.btn-icon{padding:8px;width:36px;height:36px}.btn.btn-block{width:100%}.badge{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;padding:3px 8px;border-radius:99px;letter-spacing:.3px}.badge.badge-success{background:var(--success-bg);color:var(--success)}.badge.badge-danger{background:var(--danger-bg);color:var(--danger)}.badge.badge-warning{background:var(--warning-bg);color:var(--warning)}.badge.badge-info{background:var(--info-bg);color:var(--info)}.badge.badge-neutral{background:var(--bg-subtle);color:var(--text-secondary)}.data-table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}.data-table th{text-align:left;font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;padding:10px 14px;border-bottom:1px solid var(--border);background:var(--bg-subtle);white-space:nowrap;position:sticky;top:0;z-index:1}.data-table td{padding:11px 14px;border-bottom:1px solid var(--border);color:var(--text-primary);vertical-align:middle}.data-table tr:last-child td{border-bottom:none}.data-table tr:hover td{background:var(--bg-hover)}.data-table .num{text-align:right;font-variant-numeric:tabular-nums}.data-table .cat-row td{background:var(--bg-subtle);font-weight:600;font-size:12px;color:var(--text-secondary)}.data-table .total-row td{background:var(--bg-subtle);font-weight:600}.data-table.compact th,.data-table.compact td{padding:7px 10px}.table-wrap{overflow-x:auto}.progress{height:6px;background:var(--bg-subtle);border-radius:99px;overflow:hidden}.progress-bar{height:100%;border-radius:99px;background:var(--brand);transition:width .4s ease}.progress-bar.success{background:var(--success)}.progress-bar.warning{background:var(--warning)}.progress-bar.danger{background:var(--danger)}.page-header{margin-bottom:var(--space-6)}.page-header h2{margin-bottom:var(--space-1)}.page-header p{font-size:14px;color:var(--text-muted)}.inline-input{border:none;background:transparent;font-size:13px;color:var(--text-primary);font-family:var(--font-sans);text-align:right;width:100%;padding:4px;border-radius:var(--radius-sm);outline:none}.inline-input:focus{background:var(--brand-light)}.toast-container{position:fixed;bottom:var(--space-6);right:var(--space-6);z-index:9999;display:flex;flex-direction:column;gap:var(--space-2)}.toast{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-5);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);font-size:14px;font-weight:500;min-width:240px;animation:slideUp .25s ease}.toast.success{border-left:3px solid var(--success)}.toast.success .toast-icon{color:var(--success)}.toast.error{border-left:3px solid var(--danger)}.toast.error .toast-icon{color:var(--danger)}.toast.info{border-left:3px solid var(--info)}.toast.info .toast-icon{color:var(--info)}@keyframes slideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.loading-spinner{display:flex;align-items:center;justify-content:center;padding:var(--space-10)}.loading-spinner .spinner{width:36px;height:36px;border:3px solid var(--border);border-top-color:var(--brand);border-radius:50%;animation:spin .7s linear infinite}.skeleton{background:linear-gradient(90deg,var(--bg-subtle) 25%,var(--bg-hover) 50%,var(--bg-subtle) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--radius-sm)}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{to{background-position:-200% 0}}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-10) var(--space-6);text-align:center;color:var(--text-muted)}.empty-state .empty-icon{font-size:40px;margin-bottom:var(--space-4);opacity:.5}.empty-state h4{font-size:15px;color:var(--text-secondary);margin-bottom:var(--space-2)}.empty-state p{font-size:13px;max-width:320px}.year-tabs{display:flex;gap:var(--space-1);background:var(--bg-subtle);padding:3px;border-radius:var(--radius-sm)}.year-tabs .year-tab{padding:5px 14px;font-size:13px;font-weight:500;border-radius:calc(var(--radius-sm) - 2px);cursor:pointer;border:none;background:transparent;color:var(--text-muted);transition:all var(--transition)}.year-tabs .year-tab.active{background:var(--bg-surface);color:var(--text-primary);box-shadow:var(--shadow-sm)}.year-tabs .year-tab:hover:not(.active){color:var(--text-primary)}@media (max-width: 768px){.main-content{margin-left:0}.page-content{padding:var(--space-4)}.form-grid,.form-grid.cols-3{grid-template-columns:1fr}.stats-grid{grid-template-columns:1fr 1fr}h1{font-size:22px}h2{font-size:18px}h3{font-size:16px}}@media (max-width: 480px){.stats-grid{grid-template-columns:1fr}}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.gap-6{gap:var(--space-6)}.mt-4{margin-top:var(--space-4)}.mt-6{margin-top:var(--space-6)}.mb-4{margin-bottom:var(--space-4)}.mb-6{margin-bottom:var(--space-6)}.text-sm{font-size:12px}.text-muted{color:var(--text-muted)}.text-success{color:var(--success)}.text-danger{color:var(--danger)}.font-mono{font-family:Courier New,monospace;font-variant-numeric:tabular-nums}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.w-full{width:100%}.text-right{text-align:right}.cursor-pointer{cursor:pointer}app-root:has(app-portfolio){overflow:visible!important;height:auto!important}app-root:has(app-portfolio)+*{display:none}body:has(app-portfolio){overflow:auto!important;height:auto!important}
