.summary-table { font-size: .82rem; }
.summary-table th, .summary-table td { white-space: nowrap; vertical-align: middle; }
.summary-table td.amount { text-align: right; font-family: monospace; }
.summary-table .row-total { background: #f8f9fa; font-weight: bold; }
.summary-table .row-income { background: #eef7ee; }
.summary-table .row-balance { background: #fff8e1; font-weight: bold; }
.summary-table .cat-name { position: sticky; left: 0; background: #fff; z-index: 1; min-width: 110px; }
.summary-table thead th { position: sticky; top: 0; background: #f1f3f5; z-index: 2; }
.summary-table thead th:first-child { z-index: 3; left: 0; }
.summary-table .row-total .cat-name { background: #f8f9fa; }
.summary-table .row-income .cat-name { background: #eef7ee; }
.summary-table .row-balance .cat-name { background: #fff8e1; }
.highlight-cell { background: #fff3cd !important; }
.zero-cell { color: #ccc; }
.bar-bg { display: inline-block; height: 14px; border-radius: 2px; vertical-align: middle; }
.summary-table td.clickable { cursor: pointer; }
.summary-table td.clickable:hover { background: #e8f0fe; }

/* 内訳モーダル */
#breakdown-modal .modal-dialog { max-width: 800px; }
#breakdown-table { font-size: .82rem; }
#breakdown-table th { position: sticky; top: 0; background: #f1f3f5; z-index: 1; }
#breakdown-body-wrap { max-height: 420px; overflow-y: auto; }

/* 取引検索 */
#search-results-table { font-size: .82rem; }
#search-results-table th { position: sticky; top: 0; background: #f1f3f5; z-index: 1; }
#search-results-wrap { max-height: 50vh; overflow-y: auto; }
.search-panel .form-label { font-size: .8rem; margin-bottom: 2px; }
