: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}@media(max-width:768px){.header{flex-direction:column;align-items:flex-start}.data-table{font-size:.8rem}.data-table th,.data-table td{padding:.4rem}}
