*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--color-bg: #f8f9fa;--color-surface: #ffffff;--color-border: #e0e0e0;--color-text: #1a1a1a;--color-text-muted: #666;--color-accent: #2563eb;--color-in: #16a34a;--color-out: #dc2626;--font: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--radius: 6px}body{font-family:var(--font);background:var(--color-bg);color:var(--color-text);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--color-accent);text-decoration:none}a:hover{text-decoration:underline}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:20px 24px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 16px;font-family:var(--font);font-size:14px;font-weight:500;border-radius:var(--radius);border:1px solid var(--color-border);cursor:pointer;transition:background .15s,border-color .15s,color .15s;text-decoration:none;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-accent);border-color:var(--color-accent);color:#fff}.btn-primary:hover:not(:disabled){background:#1d4ed8;border-color:#1d4ed8}.btn-ghost{background:transparent;border-color:var(--color-border);color:var(--color-text)}.btn-ghost:hover:not(:disabled){background:var(--color-bg)}.report-table{width:100%;border-collapse:collapse;font-size:12px}.report-table th{text-align:left;font-weight:600;padding:6px 8px;border-bottom:2px solid var(--color-border);color:var(--color-text-muted);white-space:nowrap}.report-table td{padding:6px 8px;border-bottom:1px solid var(--color-border);vertical-align:middle}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}:root{--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--sp-12: 48px;--text-xs: 11px;--text-sm: 12px;--text-base: 13px;--text-md: 14px;--text-lg: 16px;--text-xl: 18px;--text-2xl: 20px;--color-positive: #16a34a;--color-negative: #dc2626;--color-warning: #d97706;--color-muted: #64748b;--color-subtle: #94a3b8;--color-on-dark: #f8fafc}.page-shell{padding:0}.page-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--sp-3);margin-bottom:var(--sp-5)}.page-title{font-size:var(--text-xl);font-weight:600;color:#0f172a;margin:0;font-family:system-ui,-apple-system,sans-serif}.controls-bar{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-3);margin-bottom:var(--sp-5);padding:var(--sp-3) var(--sp-4);background:#f8fafc;border:1px solid #e2e8f0;border-radius:var(--radius)}.report-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.report-table th{text-align:left;font-weight:600;padding:7px var(--sp-2);border-bottom:2px solid var(--color-border);color:var(--color-muted);white-space:nowrap;background:#f8fafc;position:sticky;top:0;z-index:1}.report-table th.num{text-align:right}.report-table td{padding:6px var(--sp-2);border-bottom:1px solid var(--color-border);vertical-align:middle;color:#334155;font-size:var(--text-sm)}.report-table td.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.report-table tbody tr:nth-child(2n){background:var(--color-bg)}.report-table tbody tr:hover{background:#f0f4ff}.report-table .section-row td{background:#1e293b;color:var(--color-on-dark);font-weight:700;font-size:var(--text-xs);letter-spacing:.05em;text-transform:uppercase;padding:6px var(--sp-2)}.report-table .subtotal-row td{background:#f1f5f9;font-weight:600;border-top:1px solid #cbd5e1;border-bottom:1px solid #cbd5e1}.table-wrap{overflow-x:auto;border-radius:var(--radius);border:1px solid var(--color-border);background:var(--color-surface)}.val-pos{color:var(--color-positive)}.val-neg{color:var(--color-negative)}.val-muted{color:var(--color-subtle)}.field-select,.field-input{padding:5px 10px;border:1px solid #cbd5e1;border-radius:var(--radius);background:var(--color-surface);font-size:var(--text-base);color:#1e293b;font-family:var(--font);cursor:pointer}.field-select:focus,.field-input:focus{outline:2px solid var(--color-accent);outline-offset:1px}
