:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.5;font-weight:400;color:#213547;background-color:#f5f6f8;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}#root{width:100%}.login-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;padding:2rem}.login-container h1{margin-bottom:2rem;color:#1e3a5f}.login-form{display:flex;flex-direction:column;gap:1rem;width:100%;max-width:360px}.form-field{display:flex;flex-direction:column;gap:.25rem}.form-field label{font-size:.875rem;color:#555}.form-field input{padding:.6rem .75rem;border:1px solid #ccc;border-radius:6px;font-size:1rem}.form-field input:focus{outline:none;border-color:#1e3a5f;box-shadow:0 0 0 2px #1e3a5f26}.login-form button{padding:.7rem;background:#1e3a5f;color:#fff;border:none;border-radius:6px;font-size:1rem;cursor:pointer;margin-top:.5rem}.login-form button:hover{background:#2c5f8a}.login-form button:disabled{opacity:.6;cursor:not-allowed}.error-message{color:#e54b2a;font-size:.875rem;margin:0}.dashboard{min-height:100vh}.dashboard-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 2rem;background:#1e3a5f;color:#fff}.dashboard-header h1{margin:0;font-size:1.25rem}.header-right{display:flex;align-items:center;gap:1rem}.user-email{font-size:.875rem;opacity:.8}.logout-btn{padding:.4rem .75rem;background:#ffffff26;color:#fff;border:1px solid rgba(255,255,255,.3);border-radius:4px;font-size:.8rem;cursor:pointer}.logout-btn:hover{background:#ffffff40}.dashboard-main{padding:2rem}.subtle{color:#888;font-size:.875rem}.loading{display:flex;justify-content:center;align-items:center;min-height:100vh;color:#888}.net-worth-card{background:#fff;border-radius:12px;padding:1.75rem 2rem;margin-bottom:2.5rem;box-shadow:0 1px 3px #00000014,0 4px 12px #0000000a}.nw-hero{text-align:center;margin-bottom:1.5rem}.nw-hero-label{font-size:.85rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:#888;margin-bottom:.25rem}.nw-hero-value{font-size:2.75rem;font-weight:700;color:#1e3a5f;letter-spacing:-.02em}.nw-metrics{display:flex;justify-content:center;gap:3rem;padding:1.25rem 0;border-top:1px solid #eee;border-bottom:1px solid #eee}.nw-metric{text-align:center}.nw-metric-value{font-size:1.35rem;font-weight:600;color:#333}.nw-metric-label{font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:#888;margin-top:.2rem}.nw-liability{color:#e54b2a}.nw-breakdown{display:flex;justify-content:center;gap:2rem;padding-top:1.25rem;flex-wrap:wrap}.nw-breakdown-item{display:flex;flex-direction:column;align-items:center;gap:.15rem}.nw-breakdown-label{font-size:.7rem;font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:#aaa}.nw-breakdown-value{font-size:.95rem;font-weight:500;color:#555}.nw-data-status{text-align:center;padding-top:1rem;font-size:.7rem;color:#bbb;letter-spacing:.02em}@media(max-width:640px){.net-worth-card{padding:1.25rem 1rem}.nw-hero-value{font-size:2rem}.nw-metrics{gap:1.5rem}.nw-metric-value{font-size:1.1rem}.nw-breakdown{gap:1rem}}.quarterly-chart-card{background:#fff;border-radius:12px;padding:1.75rem 2rem;margin-bottom:2.5rem;box-shadow:0 1px 3px #00000014,0 4px 12px #0000000a}.quarterly-chart-card h2{margin:0 0 1.25rem;font-size:1.25rem;color:#1e3a5f}@media(max-width:640px){.quarterly-chart-card{padding:1rem .5rem}}.allocation-card{background:#fff;border-radius:12px;padding:1.75rem 2rem;margin-bottom:2.5rem;box-shadow:0 1px 3px #00000014,0 4px 12px #0000000a}.allocation-card h2{margin:0 0 1.25rem;font-size:1.25rem;color:#1e3a5f}.allocation-content{display:flex;gap:2rem;align-items:flex-start}.allocation-chart-wrap{flex:0 0 280px;position:relative}.allocation-total{text-align:center;margin-top:-.5rem}.allocation-total-label{display:block;font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:#aaa}.allocation-total-value{display:block;font-size:1.1rem;font-weight:600;color:#333}.allocation-drift-table{flex:1;min-width:0}.allocation-drift-table table{width:100%;border-collapse:collapse;font-size:.85rem}.allocation-drift-table th{text-align:left;padding:.35rem .5rem;font-size:.7rem;font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:#888;border-bottom:1px solid #eee}.allocation-drift-table td{padding:.4rem .5rem;border-bottom:1px solid #f0f0f0;color:#333}.allocation-drift-table .col-right{text-align:right}.allocation-drift-table .class-name{font-weight:500}.color-dot{display:inline-block;width:10px;height:10px;border-radius:50%}.drift-over{color:#e54b2a;font-weight:600}.drift-under{color:#1e3a5f;font-weight:600}@media(max-width:768px){.allocation-content{flex-direction:column}.allocation-chart-wrap{width:100%}.allocation-card{padding:1rem .75rem}}.accounts-overview h2{margin:0 0 1.5rem;font-size:1.5rem;color:#1e3a5f}.account-group{margin-bottom:2rem}.account-group-header{margin:0 0 .5rem;font-size:.85rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#1e3a5f;border-bottom:2px solid #1e3a5f;padding-bottom:.35rem;display:flex;justify-content:space-between;align-items:baseline}.group-total{font-size:.9rem;font-weight:600;color:#333;text-transform:none;letter-spacing:normal}.accounts-table{width:100%;border-collapse:collapse;font-size:.9rem}.accounts-table th{text-align:left;padding:.4rem .75rem;font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:#888;border-bottom:1px solid #eee}.accounts-table td{padding:.5rem .75rem;border-bottom:1px solid #f0f0f0;color:#333}.accounts-table tbody tr:hover{background:#f8f9fb}.account-name{font-weight:500}.account-note{display:inline-block;margin-left:.5rem;font-size:.75rem;font-weight:400;color:#999;font-style:italic}.account-custodian,.account-owner{color:#666}.col-balance{text-align:right}.no-data{color:#ccc}.balance-source{color:#7ab87a;font-size:.6rem;margin-left:.35rem;vertical-align:middle}@media(max-width:640px){.dashboard-header{flex-direction:column;gap:.5rem;text-align:center}.dashboard-main{padding:1rem}.accounts-table{font-size:.8rem}.accounts-table th,.accounts-table td{padding:.35rem .4rem}}.nav-tabs{display:flex;gap:.25rem;margin-left:1.5rem}.nav-tab{padding:.4rem .85rem;background:#ffffff1a;color:#ffffffb3;border:1px solid transparent;border-radius:4px;font-size:.8rem;cursor:pointer;transition:all .15s}.nav-tab:hover{background:#fff3;color:#fff}.nav-tab.active{background:#ffffff40;color:#fff;border-color:#fff6}.data-entry-card{background:#fff;border-radius:12px;padding:1.75rem 2rem;margin-bottom:2.5rem;box-shadow:0 1px 3px #00000014,0 4px 12px #0000000a}.data-entry-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.25rem;flex-wrap:wrap;gap:.75rem}.data-entry-header h2{margin:0;font-size:1.25rem;color:#1e3a5f}.data-entry-filters{display:flex;gap:.5rem}.data-entry-filters select{padding:.35rem .6rem;border:1px solid #ccc;border-radius:6px;font-size:.8rem;color:#333;background:#fff}.data-entry-filters select:focus{outline:none;border-color:#1e3a5f;box-shadow:0 0 0 2px #1e3a5f26}.data-entry-table-wrap{overflow-x:auto}.data-entry-table{width:100%;border-collapse:collapse;font-size:.85rem}.data-entry-table th{text-align:left;padding:.4rem .5rem;font-size:.7rem;font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:#888;border-bottom:2px solid #eee;position:sticky;top:0;background:#fff}.data-entry-table td{padding:.3rem .5rem;border-bottom:1px solid #f0f0f0;color:#333}.data-entry-table tbody tr:hover{background:#f8f9fb}.data-entry-table tr.row-edited{background:#fffbe6}.data-entry-table tr.row-edited:hover{background:#fff7cc}.cell-institution{font-weight:500;color:#1e3a5f;white-space:nowrap}.cell-account{color:#555;white-space:nowrap}.cell-holding{color:#666;font-family:SF Mono,Menlo,Monaco,monospace;font-size:.8rem}.cell-quantity{width:130px}.qty-input{width:100%;padding:.25rem .4rem;border:1px solid #ddd;border-radius:4px;font-size:.85rem;font-family:SF Mono,Menlo,Monaco,monospace;text-align:right;background:#fafafa;transition:border-color .15s,background .15s}.qty-input:focus{outline:none;border-color:#1e3a5f;background:#fff;box-shadow:0 0 0 2px #1e3a5f1f}.qty-input.qty-changed{border-color:#e5a100;background:#fffdf5}.cell-units{color:#999;font-size:.75rem}.cell-price{color:#666;font-family:SF Mono,Menlo,Monaco,monospace;font-size:.8rem}.cell-value{font-weight:500;font-family:SF Mono,Menlo,Monaco,monospace;font-size:.8rem}.cell-staleness{color:#bbb;font-size:.7rem;white-space:nowrap}.col-center{text-align:center}.totals-row td{border-top:2px solid #1e3a5f;border-bottom:none;padding-top:.5rem}.totals-label{font-weight:600;color:#888;text-transform:uppercase;font-size:.75rem;letter-spacing:.04em}.totals-value{font-weight:700;color:#1e3a5f;font-family:SF Mono,Menlo,Monaco,monospace;font-size:.9rem}.data-entry-actions{display:flex;justify-content:space-between;align-items:center;margin-top:1.25rem;padding-top:1rem;border-top:1px solid #eee}.change-count{font-size:.8rem;color:#888}.action-buttons{display:flex;gap:.5rem}.btn-reset{padding:.45rem 1rem;background:#fff;color:#666;border:1px solid #ccc;border-radius:6px;font-size:.85rem;cursor:pointer}.btn-reset:hover:not(:disabled){background:#f5f5f5}.btn-save{padding:.45rem 1.25rem;background:#1e3a5f;color:#fff;border:none;border-radius:6px;font-size:.85rem;cursor:pointer}.btn-save:hover:not(:disabled){background:#2c5f8a}.btn-reset:disabled,.btn-save:disabled{opacity:.5;cursor:not-allowed}.save-result{margin-top:.75rem;padding:.5rem .75rem;border-radius:6px;font-size:.85rem}.save-result.success{background:#f0faf0;color:#2a7a2a;border:1px solid #c5e8c5}.save-result.error{background:#fef0f0;color:#c23b22;border:1px solid #f0c5c5}@media(max-width:768px){.data-entry-card{padding:1rem .5rem}.data-entry-header{flex-direction:column;align-items:flex-start}.data-entry-table{font-size:.75rem}.qty-input{font-size:.75rem;padding:.2rem .3rem}.cell-quantity{width:100px}.nav-tabs{margin-left:0;margin-top:.5rem}}
