:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;--primary-color: #3b82f6;--bg-color: #f8fafc;--sidebar-bg: #ffffff;--border-color: #e2e8f0;--text-color: #334155;--text-light: #64748b}body{margin:0;background-color:var(--bg-color);color:var(--text-color)}.main-app{min-height:100vh}.login-container,.loading-container{display:flex;justify-content:center;align-items:center;width:100vw;height:100vh;background-color:#f4f5f7}.login-box{padding:2.5rem 3rem;background-color:#fff;border-radius:8px;box-shadow:0 5px 15px #0000001a;text-align:center;width:100%;max-width:400px}.login-box h2{margin-top:0;margin-bottom:.5rem;font-size:1.8rem;color:#333}.login-box p{margin-bottom:2rem;color:#667}.google-btn{background-color:#4285f4;color:#fff;border:none;border-radius:4px;padding:12px 24px;font-size:1rem;font-weight:500;cursor:pointer;transition:background-color .3s ease,box-shadow .3s ease;box-shadow:0 2px 4px #0000001a}.google-btn:hover{background-color:#357ae8;box-shadow:0 4px 8px #00000026}.loading-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#ffffffb3;display:flex;justify-content:center;align-items:center;z-index:9999}.spinner{width:50px;height:50px;border:5px solid var(--border-color);border-top-color:var(--primary-color);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.dashboard-layout{display:flex;height:100vh}.dashboard-main{flex-grow:1;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden}.dashboard-content{padding:1.5rem;flex-grow:1}.dashboard-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 2rem;background-color:var(--sidebar-bg);border-bottom:1px solid var(--border-color);box-sizing:border-box;flex-shrink:0;position:sticky;top:0;z-index:1000}.dashboard-header h1{font-size:1.25rem;margin:0}.header-actions{display:flex;align-items:center;gap:1.5rem}.exchange-rate-display{font-size:.9rem;color:var(--text-light);font-weight:500}.currency-selector{padding:.4rem;font-size:.9rem;border-radius:6px;border:1px solid var(--border-color)}.logout-button{background:none;border:none;color:var(--primary-color);cursor:pointer;font-size:1rem}.sidebar{width:200px;flex-shrink:0;background-color:var(--sidebar-bg);border-right:1px solid var(--border-color);padding:1rem;transition:width .3s ease-in-out;display:flex;flex-direction:column}.sidebar.collapsed{width:80px;padding:1rem .5rem}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:1rem;margin-bottom:1rem;border-bottom:1px solid var(--border-color);flex-shrink:0}.sidebar-title{font-size:1.2rem;margin:0;white-space:nowrap;overflow:hidden;transition:opacity .2s ease-in-out,width .2s ease-in-out}.sidebar.collapsed .sidebar-title{opacity:0;width:0}.collapse-btn{background:none;border:none;cursor:pointer;padding:.25rem;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:transform .3s ease,background-color .2s}.collapse-btn:hover{background-color:var(--bg-color)}.sidebar.collapsed .collapse-btn{transform:rotate(180deg)}.sidebar nav{flex-grow:1}.sidebar nav ul{list-style:none;padding:0;margin:0}.sidebar nav button{width:100%;padding:.75rem 1rem;border:none;background-color:transparent;text-align:left;font-size:1rem;border-radius:6px;cursor:pointer;color:var(--text-light);display:flex;align-items:center;gap:1rem;transition:background-color .2s;overflow:hidden;white-space:nowrap}.sidebar.collapsed nav button{justify-content:center;padding:.75rem .5rem}.nav-icon{flex-shrink:0}.nav-text{transition:opacity .2s ease-in-out}.sidebar.collapsed .nav-text{opacity:0;width:0}.sidebar nav button:hover{background-color:var(--bg-color)}.sidebar nav button.active{background-color:var(--primary-color);color:#fff;font-weight:600}.page-container{max-width:1440px;margin:0 auto}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;flex-wrap:wrap;gap:1rem}.tabs .tab{padding:.5rem 1rem;border:none;background:none;font-size:1.1rem;color:var(--text-light);cursor:pointer;border-bottom:2px solid transparent}.tabs .tab.active{color:var(--primary-color);border-bottom-color:var(--primary-color);font-weight:600}.view-selectors{display:flex;align-items:center;gap:1.5rem}.timeframe-toggle{display:flex;border:1px solid var(--border-color);border-radius:6px;overflow:hidden}.timeframe-toggle button{padding:.5rem 1rem;border:none;background-color:#fff;cursor:pointer;color:var(--text-light);font-size:.9rem;transition:background-color .2s,color .2s}.timeframe-toggle button:not(:last-child){border-right:1px solid var(--border-color)}.timeframe-toggle button.active{background-color:var(--primary-color);color:#fff;font-weight:600}.year-selector select,.category-selector select{padding:.5rem;font-size:1rem;border-radius:6px;border:1px solid var(--border-color);background-color:#fff}.page-content{display:flex;flex-direction:column;gap:2rem}.charts-wrapper{display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:2rem;width:100%}.charts-wrapper.dense{grid-template-columns:repeat(auto-fit,minmax(350px,1fr))}.chart-container,.table-container{background-color:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 1px 3px #0000001a}.chart-container{flex:1;min-width:400px}.chart-container *:focus{outline:none}.table-container.full-width{width:100%;box-sizing:border-box}.chart-container.full-width{flex-basis:100%;min-width:100%}.expense-table{width:100%;border-collapse:collapse}.expense-table th,.expense-table td{padding:.75rem;text-align:left;border-bottom:1px solid var(--border-color)}.expense-table th{color:var(--text-light);font-weight:600}.error-message{color:#ef4444}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem;margin-bottom:2rem}.kpi-card{background-color:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 1px 3px #0000001a}.kpi-title{margin:0 0 .5rem;font-size:1rem;font-weight:500;color:var(--text-light)}.kpi-value{margin:0;font-size:2rem;font-weight:700;color:var(--text-color)}.holdings-table tbody tr{cursor:pointer;transition:background-color .2s}.holdings-table tbody tr:hover{background-color:var(--bg-color)}.text-green-600{color:#16a34a}.text-red-600{color:#dc2626}.text-gray-600{color:#4b5563}.clickable-pie-chart .recharts-pie-sector{cursor:pointer}.back-button{display:inline-block;padding:.5rem 1rem;font-size:.9rem;font-weight:500;color:var(--text-color);background-color:#fff;border:1px solid var(--border-color);border-radius:6px;text-decoration:none;transition:background-color .2s,color .2s}.back-button:hover{background-color:var(--bg-color)}.mobile-menu-toggle{display:none;background:none;border:none;cursor:pointer;padding:.25rem;color:var(--text-color)}.mobile-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;z-index:1999}.sidebar.mobile-open{transform:translate(0)}@media (max-width: 768px){.dashboard-layout{display:block}.sidebar{position:fixed;left:0;top:0;bottom:0;height:100%;z-index:2000;transform:translate(-100%);transition:transform .3s ease-in-out;width:250px}.sidebar.collapsed{width:250px}.sidebar.collapsed .sidebar-title,.sidebar.collapsed .nav-text{opacity:1;width:auto}.sidebar .collapse-btn{display:none}.dashboard-main{width:100%;min-height:100vh}.mobile-menu-toggle{display:block}.dashboard-header{padding:.75rem 1rem;gap:1rem}.header-title{font-size:1.1rem;flex-shrink:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-actions{gap:.75rem}.currency-selector{padding:.25rem}.dashboard-content{padding:1rem}.page-header{flex-direction:column;align-items:flex-start;gap:1.5rem}.charts-wrapper,.kpi-grid{display:block}.chart-container{min-width:0;margin-bottom:1.5rem}.expense-table thead{display:none}.expense-table tbody tr{display:block;background-color:#fff;border:1px solid var(--border-color);border-radius:8px;margin-bottom:.75rem;padding:.5rem .75rem;box-shadow:0 1px 2px #0000000d}.expense-table td{display:flex;justify-content:space-between;align-items:center;padding:.5rem .25rem;font-size:.9rem;border-bottom:1px solid var(--border-color);gap:.5rem}.expense-table td:last-child{border-bottom:none}.expense-table td:before{content:attr(data-label);font-weight:600;color:var(--text-light);font-size:.8rem;text-transform:uppercase;letter-spacing:.03em;flex-shrink:0}.expense-table td:first-child{font-weight:700;font-size:1rem;border-bottom:1px solid var(--border-color);justify-content:flex-start;gap:0}.expense-table td:first-child:before{display:none}}.projection-controls{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem;background-color:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 1px 3px #0000001a;margin-bottom:2rem}.control-item{display:flex;flex-direction:column}.control-item label{margin-bottom:.5rem;color:var(--text-light);font-weight:500}.control-item input[type=range]{width:100%;cursor:pointer}.retirement-controls{margin-top:-1rem;border-top:1px solid var(--border-color)}.checkbox-item{flex-direction:row;align-items:center;gap:.5rem}.checkbox-item label{margin-bottom:0;cursor:pointer}.checkbox-item input[type=checkbox]{width:1rem;height:1rem;cursor:pointer}
