:root{font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:Segoe UI,system-ui,sans-serif;background:#f5f6f8;color:#1a1a1a}.app{min-height:100vh;max-width:1200px;margin:0 auto;padding:1rem}.header{display:flex;flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid #e0e0e0}.header h1{margin:0;font-size:1.35rem;font-weight:600}.month-selector{display:flex;align-items:center;gap:.5rem}.month-selector label{display:flex;align-items:center;gap:.35rem;font-size:.9rem}.month-selector select{padding:.4rem .5rem;border:1px solid #ccc;border-radius:6px;font-size:.9rem;background:#fff}.btn-save{padding:.5rem 1rem;border:1px solid #2c5282;border-radius:8px;background:#2c5282;color:#fff;font-size:.95rem;font-weight:500;cursor:pointer;margin-left:auto}.btn-save:hover{background:#2a4365}.save-message{font-size:.9rem;color:#2d7a3e;font-weight:500}.tabs{display:flex;gap:.25rem;margin-bottom:1rem}.tabs button{padding:.5rem 1rem;border:1px solid #ddd;border-radius:8px;background:#fff;font-size:.95rem;cursor:pointer}.tabs button:hover{background:#f0f0f0}.tabs button.active{background:#2c5282;color:#fff;border-color:#2c5282}.main{background:#fff;border-radius:10px;padding:1.25rem;box-shadow:0 1px 3px #00000014}.section{margin-bottom:2rem}.section:last-child{margin-bottom:0}.section-title{margin:0 0 .75rem;font-size:1.1rem;font-weight:600;color:#2d3748}.field{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.field label{min-width:180px;font-size:.9rem}.number-input{width:140px;padding:.4rem .5rem;border:1px solid #cbd5e0;border-radius:6px;font-size:.9rem;text-align:right}.number-input:focus{outline:none;border-color:#2c5282;box-shadow:0 0 0 2px #2c528233}.number-input[readonly],.readonly{background:#edf2f7;color:#4a5568}.table-wrap{overflow-x:auto;margin-bottom:.75rem}.data-table{width:100%;border-collapse:collapse;font-size:.9rem}.data-table th,.data-table td{padding:.5rem .6rem;border:1px solid #e2e8f0;text-align:left}.data-table th{background:#f7fafc;font-weight:600;color:#2d3748}.data-table td .number-input{width:100%;min-width:80px}.add-row{display:flex;align-items:center;gap:.5rem;margin-top:.5rem}.add-row input[type=text]{padding:.4rem .5rem;border:1px solid #cbd5e0;border-radius:6px;font-size:.9rem;width:160px}.add-row button{padding:.4rem .75rem;border:1px solid #2c5282;border-radius:6px;background:#2c5282;color:#fff;font-size:.9rem;cursor:pointer}.add-row button:hover{background:#2a4365}.total-line{margin:.5rem 0 0;font-weight:600;font-size:.95rem}.total-line.readonly-line{padding:.5rem .75rem;background:#edf2f7;border-radius:6px;margin-bottom:.75rem}.btn-ghost{padding:.25rem .5rem;border:1px solid #e2e8f0;border-radius:4px;background:transparent;font-size:.8rem;cursor:pointer;color:#718096}.btn-ghost:hover{background:#f7fafc;color:#e53e3e}.btn-danger{padding:.25rem .5rem;border:1px solid #e53e3e;border-radius:4px;background:#e53e3e;color:#fff;font-size:.8rem;cursor:pointer;margin-right:.25rem}.asset-inputs{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:1rem}.expense-table .number-input{min-width:70px}.expense-table tr.bank-row{border-bottom:1px solid #e2e8f0}.expense-table tr.bank-row:last-child{border-bottom:1px solid #cbd5e0}.expense-table td.bank-name-cell{font-weight:600;background:#f7fafc;min-width:5rem}.expense-table-transposed th.bank-col-header{display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;vertical-align:top;min-width:6rem}.expense-table-transposed .btn-inline{padding:.2rem .4rem;font-size:.75rem}.expense-table-transposed tbody th{font-weight:600;text-align:left;white-space:nowrap}.expense-table-transposed tr.total-row th,.expense-table-transposed tr.total-row td{font-weight:600;background:#f7fafc}.chart-page .section{margin-bottom:2.5rem}.chart-wrap{min-height:320px}.unit{font-size:.9rem;color:#718096}.transfer-note{font-size:.85rem;color:#718096;font-weight:400}.btn-inline{padding:.2rem .4rem;font-size:.75rem;margin-right:.25rem}.stock-holdings-table td .number-input{min-width:80px}.stock-holdings-table td input[type=text]{min-width:100px;padding:.35rem .5rem;border:1px solid #ccc;border-radius:6px;font-size:.9rem}.stock-holdings-table tr.subtotal-row td{font-weight:600;background:#f7fafc;border-top:1px solid #e2e8f0}.sync-indicator{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .7rem;border:1px solid #cbd5e0;border-radius:999px;background:#fff;font-size:.8rem;color:#4a5568;cursor:pointer;margin-left:auto}.sync-indicator:hover{background:#f7fafc}.sync-indicator-icon{font-size:.9rem;line-height:1}.sync-indicator-idle{border-color:#38a169;color:#276749}.sync-indicator-pulling,.sync-indicator-pushing{border-color:#3182ce;color:#2b6cb0}.sync-indicator-error,.sync-indicator-offline{border-color:#e53e3e;color:#c53030;background:#fff5f5}.sync-indicator-needs-migration{border-color:#d69e2e;color:#975a16;background:#fffbeb}.sync-indicator-no-token{border-color:#a0aec0;color:#718096}.btn-save{margin-left:0}.modal-backdrop{position:fixed;inset:0;background:#0f172a73;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.modal-panel{background:#fff;border-radius:12px;box-shadow:0 12px 40px #00000040;width:100%;max-width:560px;max-height:90vh;overflow:auto;display:flex;flex-direction:column}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid #e2e8f0}.modal-header h2{margin:0;font-size:1.15rem;font-weight:600}.modal-close{background:transparent;border:none;font-size:1.1rem;cursor:pointer;color:#718096;padding:.25rem .5rem;border-radius:4px}.modal-close:hover{background:#f7fafc;color:#2d3748}.modal-body{padding:1.25rem;display:flex;flex-direction:column;gap:1.5rem}.settings-section h3{margin:0 0 .75rem;font-size:.95rem;font-weight:600;color:#2d3748}.settings-row{display:flex;justify-content:space-between;font-size:.9rem;margin-bottom:.5rem}.settings-label{color:#718096}.sync-status{font-weight:500}.sync-status-idle{color:#276749}.sync-status-pulling,.sync-status-pushing{color:#2b6cb0}.sync-status-error,.sync-status-offline{color:#c53030}.sync-status-needs-migration{color:#975a16}.sync-status-no-token{color:#718096}.settings-error{margin-top:.5rem;padding:.5rem .75rem;background:#fff5f5;border:1px solid #feb2b2;color:#c53030;border-radius:6px;font-size:.85rem}.settings-help{margin:0 0 .75rem;font-size:.85rem;color:#4a5568;line-height:1.5}.settings-help code{background:#edf2f7;padding:.1rem .3rem;border-radius:3px;font-size:.8rem}.settings-token-row{display:flex;gap:.5rem;margin-bottom:.5rem}.settings-token-input{flex:1;padding:.5rem .6rem;border:1px solid #cbd5e0;border-radius:6px;font-family:Segoe UI,monospace;font-size:.85rem}.settings-token-input:focus{outline:none;border-color:#2c5282;box-shadow:0 0 0 2px #2c528233}.settings-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.5rem}.btn-primary{padding:.45rem .9rem;border:1px solid #2c5282;border-radius:6px;background:#2c5282;color:#fff;font-size:.85rem;cursor:pointer}.btn-primary:hover:not(:disabled){background:#2a4365}.btn-primary:disabled{background:#a0aec0;border-color:#a0aec0;cursor:not-allowed}.btn-secondary{padding:.45rem .9rem;border:1px solid #cbd5e0;border-radius:6px;background:#fff;color:#2d3748;font-size:.85rem;cursor:pointer}.btn-secondary:hover:not(:disabled){background:#f7fafc}.btn-secondary:disabled{color:#a0aec0;cursor:not-allowed}.btn-danger-outline{padding:.45rem .9rem;border:1px solid #e53e3e;border-radius:6px;background:#fff;color:#c53030;font-size:.85rem;cursor:pointer}.btn-danger-outline:hover:not(:disabled){background:#fff5f5}.btn-danger-outline:disabled{color:#a0aec0;border-color:#cbd5e0;cursor:not-allowed}.settings-test-result{font-size:.85rem;padding:.4rem .6rem;background:#edf2f7;border-radius:6px;color:#2d3748}.settings-warning{margin-top:.75rem;font-size:.8rem;color:#975a16;background:#fffbeb;border:1px solid #faf089;padding:.5rem .75rem;border-radius:6px;line-height:1.5}@media(max-width:768px){.header{flex-direction:column;align-items:flex-start}.sync-indicator{margin-left:0}.data-table{font-size:.8rem}.data-table th,.data-table td{padding:.4rem}.modal-panel{max-width:100%}}
