*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--green: #2d6a4f;--green-dark: #1b4332;--green-light:#d8f3dc;--accent: #52b788;--income: #2d6a4f;--expense: #c0392b;--bg: #f4f6f0;--card-bg: #ffffff;--border: #dde3d8;--text: #1a1a1a;--muted: #6b7a6b;--radius: 8px;--shadow: 0 2px 8px rgba(0,0,0,.08)}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.5;min-height:100vh}#login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);padding:1rem}.login-card{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 4px 24px #0000001a;padding:2.5rem 2rem;width:100%;max-width:380px}.login-logo{text-align:center;margin-bottom:2rem}.login-logo h1{font-size:1.6rem;font-weight:700;color:var(--green-dark);letter-spacing:-.02em}.login-logo p{color:var(--muted);font-size:.875rem;margin-top:4px}.login-card .field{margin-bottom:1rem}.login-card button[type=submit]{width:100%;margin-top:.5rem;padding:.65rem;font-size:1rem}.login-error{margin-top:.75rem;font-size:.875rem;color:var(--expense);background:#fde8e8;border-radius:6px;padding:.5rem .75rem;text-align:center}header{background:var(--green-dark);color:#fff;padding:1rem 2rem}.header-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem}.header-right{display:flex;align-items:center;gap:.75rem;flex-shrink:0}.header-user{font-size:.8rem;color:var(--accent);max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn-logout{background:transparent;color:#fff;border:1px solid rgba(255,255,255,.4);padding:.35rem .9rem;border-radius:6px;font-size:.8rem;font-weight:600;cursor:pointer;transition:background .15s;white-space:nowrap}.btn-logout:hover{background:#ffffff26}header h1{font-size:1.6rem;font-weight:700;letter-spacing:-.02em}header .subtitle{color:var(--accent);font-size:.875rem;margin-top:2px}main{max-width:1100px;margin:0 auto;padding:1.5rem 1rem 3rem;display:flex;flex-direction:column;gap:1.5rem}.card{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.5rem}.card h2{font-size:1.1rem;font-weight:600;color:var(--green-dark);margin-bottom:1.25rem}.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem}.field{display:flex;flex-direction:column;gap:4px}.field.full-width{grid-column:1 / -1}label{font-size:.8rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}input,select{padding:.5rem .75rem;border:1px solid var(--border);border-radius:6px;font-size:.95rem;color:var(--text);background:#fff;width:100%;transition:border-color .15s}select:disabled{opacity:.45;cursor:not-allowed;background:var(--bg)}input:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #52b78833}.form-actions{margin-top:1.25rem}button[type=submit]{background:var(--green);color:#fff;border:none;padding:.6rem 1.5rem;border-radius:6px;font-size:.95rem;font-weight:600;cursor:pointer;transition:background .15s}button[type=submit]:hover{background:var(--green-dark)}button[type=submit]:disabled{background:#aaa;cursor:not-allowed}.btn-secondary{background:transparent;color:var(--green);border:1px solid var(--green);padding:.4rem 1rem;border-radius:6px;font-size:.875rem;font-weight:600;cursor:pointer;transition:background .15s,color .15s}.btn-secondary:hover{background:var(--green);color:#fff}.form-message{margin-top:.75rem;font-size:.9rem;font-weight:500;padding:.5rem .75rem;border-radius:6px}.form-message.success{background:var(--green-light);color:var(--green-dark)}.form-message.error{background:#fde8e8;color:var(--expense)}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem;gap:1rem}.tabs{display:flex;gap:2px;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:3px}.tab{background:transparent;border:none;padding:.4rem 1rem;border-radius:6px;font-size:.875rem;font-weight:600;color:var(--muted);cursor:pointer;transition:background .15s,color .15s;white-space:nowrap}.tab:hover{color:var(--green-dark)}.tab.active{background:var(--card-bg);color:var(--green-dark);box-shadow:0 1px 4px #00000014}.search-bar{margin-bottom:1rem}.search-bar input{width:100%;max-width:420px;padding:.45rem .75rem;font-size:.9rem}.summary-bar{display:flex;gap:1.5rem;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:.6rem 1rem;font-size:.9rem;font-weight:600;margin-bottom:1rem;flex-wrap:wrap}.income-text{color:var(--income)}.expense-text{color:var(--expense)}#table-container{overflow-x:auto;-webkit-overflow-scrolling:touch}table{width:100%;border-collapse:collapse;font-size:.9rem}thead th{background:var(--bg);color:var(--muted);text-transform:uppercase;font-size:.75rem;letter-spacing:.05em;padding:.6rem .75rem;text-align:left;border-bottom:2px solid var(--border);white-space:nowrap;-webkit-user-select:none;user-select:none}thead th[data-col]{cursor:pointer}thead th[data-col]:hover{color:var(--green-dark);background:var(--green-light)}thead th.sorted{color:var(--green-dark)}.sort-icon{font-style:normal;font-size:.7rem;opacity:.6}tbody tr{border-bottom:1px solid var(--border);transition:background .1s}tbody tr:hover{background:var(--bg)}tbody tr:last-child{border-bottom:none}tbody td{padding:.65rem .75rem;vertical-align:middle;white-space:nowrap}.badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:.78rem;font-weight:700;text-transform:capitalize}.badge-income{background:var(--green-light);color:var(--income)}.badge-expense{background:#fde8e8;color:var(--expense)}.amount-income{color:var(--income);font-weight:600}.amount-expense{color:var(--expense);font-weight:600}.hidden{display:none!important}.muted{color:var(--muted);font-size:.9rem}@media (max-width: 600px){header{padding:.875rem 1rem}header h1{font-size:1.3rem}.header-inner{flex-direction:column;align-items:flex-start;gap:.4rem}.header-right{width:100%;justify-content:space-between}main{padding:.875rem .625rem 2rem;gap:1rem}.card{padding:1.1rem .875rem}input,select{font-size:16px;min-height:44px}button[type=submit]{width:100%;padding:.75rem;font-size:1rem}.section-header{gap:.5rem}.tabs{flex:1}.tab{flex:1;text-align:center;padding:.4rem .375rem;font-size:.8rem}.search-bar input{max-width:100%;font-size:16px}.summary-bar{gap:.5rem 1rem;font-size:.85rem;padding:.5rem .75rem}.login-card{padding:2rem 1.25rem}}
