:root{--color-bg: #fafafa;--color-surface: #ffffff;--color-border: #e5e5e5;--color-text: #1a1a1a;--color-text-muted: #6b6b6b;--color-accent: #2f6f4f;--color-accent-dark: #234f38;--color-danger: #b3392c;--color-danger-bg: #fbeae7;--color-warning: #9a6b0a;--color-warning-bg: #fbf3e0;--color-income: #2f6f4f;--color-expense: #b3392c;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--color-bg);color:var(--color-text)}h1,h2,h3{font-weight:600}a{color:var(--color-accent)}button{font-family:inherit;cursor:pointer}input,select,button,textarea{font-family:inherit;font-size:.95rem}.app-shell{min-height:100vh;display:flex;flex-direction:column}.nav{display:flex;align-items:center;gap:4px;padding:0 24px;background:var(--color-surface);border-bottom:1px solid var(--color-border);overflow-x:auto}.nav-brand{font-weight:700;padding:14px 16px 14px 0;margin-right:8px;white-space:nowrap}.nav a{text-decoration:none;color:var(--color-text-muted);padding:14px 10px;white-space:nowrap;border-bottom:2px solid transparent;font-size:.9rem}.nav a.active,.nav a:hover{color:var(--color-text);border-bottom-color:var(--color-accent)}.nav-spacer{flex:1}.nav-logout{background:none;border:none;color:var(--color-text-muted);padding:8px 10px;font-size:.9rem}.nav-logout:hover{color:var(--color-danger)}.page{padding:24px;max-width:960px;width:100%;margin:0 auto}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;padding:18px 20px;margin-bottom:16px}.card-row{display:flex;gap:16px;flex-wrap:wrap}.card-row .card{flex:1;min-width:180px}.stat-label{color:var(--color-text-muted);font-size:.85rem;margin:0 0 6px}.stat-value{font-size:1.6rem;font-weight:600;margin:0}.stat-value.income{color:var(--color-income)}.stat-value.expense{color:var(--color-expense)}.alert{border-radius:10px;padding:12px 16px;margin-bottom:10px;font-size:.9rem}.alert-warning{background:var(--color-warning-bg);color:var(--color-warning);border:1px solid #f0dfb0}.alert-danger{background:var(--color-danger-bg);color:var(--color-danger);border:1px solid #f0c9c2}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;align-items:end}.field{display:flex;flex-direction:column;gap:4px}.field label{font-size:.8rem;color:var(--color-text-muted)}.field input,.field select,.field textarea{padding:8px 10px;border:1px solid var(--color-border);border-radius:6px;background:var(--color-surface);color:var(--color-text)}.btn{padding:9px 16px;border-radius:6px;border:1px solid var(--color-accent);background:var(--color-accent);color:#fff;font-weight:500}.btn:hover{background:var(--color-accent-dark);border-color:var(--color-accent-dark)}.btn-secondary{background:transparent;color:var(--color-text);border-color:var(--color-border)}.btn-secondary:hover{background:var(--color-bg);border-color:var(--color-text-muted)}.btn-link{background:none;border:none;color:var(--color-text-muted);padding:4px 8px}.btn-link:hover{color:var(--color-danger)}.btn:disabled{opacity:.6;cursor:not-allowed}table{width:100%;border-collapse:collapse;font-size:.9rem}th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--color-border)}th{color:var(--color-text-muted);font-weight:500;font-size:.8rem;text-transform:uppercase;letter-spacing:.02em}.amount-expense{color:var(--color-expense)}.amount-income{color:var(--color-income)}.row-uncategorized{background:var(--color-warning-bg)}.row-uncategorized:hover{background:var(--color-warning-bg);filter:brightness(.97)}.error-text{color:var(--color-danger);font-size:.85rem}.muted{color:var(--color-text-muted);font-size:.85rem}.login-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.login-card{width:100%;max-width:360px}.section-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.month-switch{display:flex;align-items:center;gap:10px;margin-bottom:16px}.month-switch button{border:1px solid var(--color-border);background:var(--color-surface);border-radius:6px;padding:6px 12px}.badge{display:inline-block;font-size:.75rem;padding:2px 8px;border-radius:999px;background:var(--color-bg);border:1px solid var(--color-border);color:var(--color-text-muted)}.color-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px}.table-scroll{overflow-x:auto}.nav-toggle{display:none;background:none;border:none;font-size:1.4rem;padding:8px 12px;color:var(--color-text)}@media (max-width: 640px){.page{padding:16px}.nav-toggle{display:block}.nav{flex-wrap:wrap;overflow-x:visible;padding:0 12px}.nav-links{display:none;flex-direction:column;align-items:stretch;width:100%;gap:0;border-top:1px solid var(--color-border);padding:4px 0}.nav-links.open{display:flex}.nav a{padding:12px 4px;border-bottom:none;border-left:2px solid transparent}.nav a.active{border-left-color:var(--color-accent);background:var(--color-bg)}.nav-spacer{display:none}table.responsive-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}table.responsive-table,table.responsive-table tbody,table.responsive-table tr,table.responsive-table td{display:block;width:100%}table.responsive-table tr{border:1px solid var(--color-border);border-radius:8px;margin-bottom:10px;padding:6px 10px}table.responsive-table td{border-bottom:none;padding:6px 0;display:flex;justify-content:space-between;align-items:center;gap:8px;text-align:right}table.responsive-table td[data-label]:before{content:attr(data-label);color:var(--color-text-muted);font-size:.8rem;text-align:left;flex-shrink:0}table.responsive-table td:not([data-label]){justify-content:flex-end}.btn,.btn-secondary,button,input,select{min-height:40px}}
