:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5;font-weight:400;color:#213547;background-color:#f5f5f5;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh}a{font-weight:500;color:#1976d2;text-decoration:none}a:hover{text-decoration:underline}*{box-sizing:border-box}:root{--bg-primary: #f5f5f5;--bg-secondary: #ffffff;--text-primary: #333333;--text-secondary: #666666;--plot-bg: #ffffff;--plot-grid: #cccccc;--plot-text: #333333;--plot-zeroline: #000000}:root[data-theme=dark]{--bg-primary: #1a1a1a;--bg-secondary: #2a2a2a;--text-primary: #e0e0e0;--text-secondary: #aaaaaa;--plot-bg: #2a2a2a;--plot-grid: #444444;--plot-text: #e0e0e0;--plot-zeroline: #888888}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;background:var(--bg-primary);color:var(--text-primary)}.app{max-width:1600px;margin:0 auto;padding:20px 40px}header{text-align:center;margin-bottom:20px}header h1{margin:0;color:#333}:root[data-theme=dark] header h1{color:#fff}header .subtitle{color:#666;margin:5px 0 0}.tabs{display:flex;gap:10px;margin-bottom:20px;border-bottom:2px solid #ddd;padding-bottom:10px}:root[data-theme=dark] .tabs{border-bottom-color:#444}.tabs button{padding:10px 20px;border:none;background:#e0e0e0;border-radius:5px 5px 0 0;cursor:pointer;font-size:14px;transition:background-color .2s}:root[data-theme=dark] .tabs button{background:#333;color:#e0e0e0}.tabs button:hover{background:#d0d0d0}:root[data-theme=dark] .tabs button:hover{background:#444}.tabs button.active{background:#1976d2;color:#fff}main{background:#fff;border-radius:8px;padding:20px;box-shadow:0 2px 4px #0000001a}:root[data-theme=dark] main{background:var(--bg-secondary);box-shadow:0 2px 4px #0000004d}section h2{margin-top:0;color:#333;border-bottom:1px solid #eee;padding-bottom:10px}:root[data-theme=dark] section h2{color:#fff;border-bottom-color:#444}.summary-table{width:100%;border-collapse:collapse;margin:20px 0}.summary-table th,.summary-table td{padding:12px;text-align:left;border-bottom:1px solid #eee}:root[data-theme=dark] .summary-table th,:root[data-theme=dark] .summary-table td{border-bottom-color:#444}.summary-table th{background:#f9f9f9;font-weight:600}:root[data-theme=dark] .summary-table th{background:#333}.summary-table .currency{text-align:right;font-family:SF Mono,Monaco,monospace}.summary-table .positive{color:#2ca02c}.summary-table .negative{color:#c62828}.note{color:#666;font-size:14px;font-style:italic;margin-top:20px}.budget-notes{margin-top:20px;padding:15px;background:#f9f9f9;border-radius:5px}:root[data-theme=dark] .budget-notes{background:#333}.budget-notes h3{margin-top:0;color:#333}:root[data-theme=dark] .budget-notes h3{color:#fff}.budget-notes ul{margin:0;padding-left:20px}.budget-notes li{margin:8px 0}footer{margin-top:20px;text-align:center;color:#999;font-size:12px}:root[data-theme=dark] footer{color:#666}.chart-controls{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;flex-wrap:wrap;gap:10px}.time-range-buttons{display:flex;gap:5px}.time-range-buttons button{padding:6px 12px;border:1px solid var(--plot-grid);border-radius:4px;background:var(--bg-secondary);color:var(--text-primary);cursor:pointer;font-size:13px;transition:background .2s,border-color .2s}.time-range-buttons button:hover{background:var(--plot-grid)}.time-range-buttons button.active{background:#1976d2;border-color:#1976d2;color:#fff}.zoom-hint{font-size:12px;color:var(--text-secondary);font-style:italic}.transaction-table{margin-top:20px;border-top:1px solid var(--plot-grid);padding-top:20px}.transaction-table .table-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:10px}.transaction-table h3{margin:0;color:var(--text-primary)}.transaction-table .table-controls{display:flex;gap:20px;align-items:center;flex-wrap:wrap}.transaction-table .month-picker{display:flex;align-items:center;gap:8px}.transaction-table .month-picker label{color:var(--text-secondary);font-size:14px}.transaction-table .month-picker select{padding:6px 10px;border:1px solid var(--plot-grid);border-radius:4px;background:var(--bg-secondary);color:var(--text-primary);font-size:14px}.transaction-table .pagination{display:flex;align-items:center;gap:5px}.transaction-table .pagination button{padding:4px 8px;border:1px solid var(--plot-grid);border-radius:4px;background:var(--bg-secondary);color:var(--text-primary);cursor:pointer;font-size:12px}.transaction-table .pagination button:hover:not(:disabled){background:var(--plot-grid)}.transaction-table .pagination button:disabled{opacity:.4;cursor:not-allowed}.transaction-table .page-info{font-size:13px;color:var(--text-secondary);padding:0 8px}.transaction-table .table-summary{display:flex;gap:20px;margin-bottom:10px;font-size:14px;font-weight:500}.transaction-table .table-summary .income,.transaction-table .table-summary .positive{color:#2ca02c}.transaction-table .table-summary .expense,.transaction-table .table-summary .negative{color:#c62828}.transaction-table .table-container{overflow-x:auto}.transaction-table table{width:100%;border-collapse:collapse;font-size:13px}.transaction-table th,.transaction-table td{padding:8px 12px;text-align:left;border-bottom:1px solid var(--plot-grid)}.transaction-table th{background:var(--bg-primary);color:var(--text-primary);font-weight:600;position:sticky;top:0}.transaction-table td.amount{text-align:right;font-family:SF Mono,Monaco,monospace}.transaction-table td.amount.positive{color:#2ca02c}.transaction-table td.amount.negative{color:#c62828}.transaction-table td.month{font-family:SF Mono,Monaco,monospace;color:var(--text-secondary)}.transaction-table td.source{color:var(--text-secondary);font-size:12px}.transaction-table tbody tr:hover{background:var(--bg-primary)}.theme-toggle{position:fixed;bottom:20px;right:20px;padding:10px 15px;border:none;border-radius:20px;background:#333;color:#fff;cursor:pointer;font-size:18px;box-shadow:0 2px 8px #0003;transition:transform .2s,background .2s}.theme-toggle:hover{transform:scale(1.1);background:#444}:root[data-theme=dark] .theme-toggle{background:#666}:root[data-theme=dark] .theme-toggle:hover{background:#777}.dashboard-grid-container{padding:10px 0}.dashboard-controls{margin-bottom:15px}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(480px,1fr));gap:24px}.chart-tile{background:var(--bg-secondary);border-radius:8px;padding:15px;box-shadow:0 2px 4px #0000001a;transition:box-shadow .2s}.chart-tile:hover{box-shadow:0 4px 12px #00000026}:root[data-theme=dark] .chart-tile{box-shadow:0 2px 4px #0000004d}:root[data-theme=dark] .chart-tile:hover{box-shadow:0 4px 12px #0006}.chart-tile-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.chart-tile-header h3{margin:0;font-size:1.2rem;font-weight:600;color:var(--text-primary)}.chart-tile-header .expand-btn{background:none;border:none;cursor:pointer;padding:4px;border-radius:4px;color:var(--text-secondary);transition:color .2s,background .2s}.chart-tile-header .expand-btn:hover{color:var(--text-primary);background:var(--bg-primary)}.chart-tile-content{min-height:240px}.chart-modal-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.chart-modal{background:var(--bg-secondary);border-radius:12px;width:100%;max-width:1200px;max-height:90vh;overflow:auto;box-shadow:0 8px 32px #0000004d}.chart-modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid var(--plot-grid)}.chart-modal-header h2{margin:0;font-size:20px;color:var(--text-primary)}.chart-modal-header .close-btn{background:none;border:none;cursor:pointer;padding:8px;border-radius:6px;color:var(--text-secondary);transition:color .2s,background .2s}.chart-modal-header .close-btn:hover{color:var(--text-primary);background:var(--bg-primary)}.chart-modal-content{padding:20px}.loading,.error{padding:40px;text-align:center;color:var(--text-secondary)}.error{color:#c62828}.page{max-width:760px;margin:0 auto;padding:32px 16px 64px}.page header{text-align:center;margin-bottom:24px}.page h1{margin-bottom:4px}.page .subtitle{color:var(--text-secondary);margin:0}.prose{line-height:1.6}.prose h2{margin-top:28px;font-size:1.2em}.prose li+li{margin-top:8px}a.button,.wall a.google,.wall button{display:inline-block;padding:8px 16px;border-radius:6px;border:1px solid #1976d2;background:#1976d2;color:#fff;font:inherit;font-weight:500;cursor:pointer}a.button:hover,.wall a.google:hover,.wall button:hover{filter:brightness(1.1);text-decoration:none}a.button:disabled,.wall a.google:disabled,.wall button:disabled{opacity:.6;cursor:default}.wall{max-width:440px}.wall>div{background:var(--bg-secondary);border-radius:10px;padding:24px;margin-top:48px;display:flex;flex-direction:column;gap:12px}.wall h2,.wall h3{margin:0}.wall p{color:var(--text-secondary);margin:0}.wall form{display:flex;flex-direction:column;gap:8px}.wall form>div{display:flex;flex-direction:column;gap:4px}.wall label{font-size:.9em;color:var(--text-secondary)}.wall a.google{text-align:center}.wall .divider{border-top:1px solid var(--plot-grid);margin:8px 0}.wall input,.wall textarea{font:inherit;padding:8px 10px;border-radius:6px;border:1px solid var(--plot-grid);background:var(--bg-primary);color:var(--text-primary)}.wall .fine{text-align:center;margin-top:16px;font-size:.9em}.whoami{display:flex;justify-content:flex-end;padding:8px 40px 0}.whoami button{margin-left:8px;font:inherit;background:none;border:none;color:#1976d2;cursor:pointer}.site-footer{margin-top:48px;text-align:center;font-size:.9em;color:var(--text-secondary)}
