/* Transactions page — temporary functional layout for review and designer hand-off.
   Visual rules only; behaviour lives in app.js and hooks onto data-* attributes, so this
   file can be replaced without touching logic. Built on the tokens in styles.css. */

.tx-page{display:grid;gap:14px}
.tx-page select[data-custom-picker]{display:none!important}
.tx-select-holder{min-width:0;width:100%}
.tx-page-picker .tx-picker-menu{position:static;margin-top:6px;max-height:220px;box-shadow:none}
.tx-page-picker .tx-picker-trigger{min-height:44px;font-size:.85rem}
.tx-page-picker .tx-picker-option{min-height:40px;white-space:normal;overflow-wrap:anywhere}
.tx-row-edit-fields .tx-select-holder{grid-column:1/-1}
.tx-ledger{min-width:0;overflow:visible}
.tx-ledger .tx-results-toolbar{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;padding:16px;gap:16px}
.tx-ledger .tx-results-count{display:flex;min-width:0;gap:6px;padding:0}
.tx-ledger .tx-inline-search{min-height:44px}
.tx-ledger .tx-inline-search input{font-size:1rem}
.tx-view-options{position:relative;font-size:.8rem}
.tx-view-options>summary{cursor:pointer;padding:10px;border:1px solid var(--border);border-radius:10px;white-space:nowrap}
.tx-view-options>div{position:absolute;right:0;top:100%;z-index:25;width:240px;max-width:80vw;padding:14px;display:grid;gap:12px;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-sm)}
.tx-scope{padding:0 16px 12px;margin:0;color:var(--ink-2);font-size:.78rem;overflow-wrap:anywhere}
.tx-reset-link{border:0;background:transparent;color:var(--primary);cursor:pointer;padding:5px 8px;font-weight:700}
.tx-filter-disclosure>summary{display:flex;align-items:center;gap:12px;flex-wrap:wrap;min-height:28px}
.tx-filter-state{color:var(--ink-2);font-size:.78rem;font-weight:400;overflow-wrap:anywhere}
.tx-ledger .tx-bulk-bar{margin:0 16px 12px}
.tx-ledger .tx-table{table-layout:fixed}
.tx-ledger .tx-table th:first-child{width:46px}
.tx-ledger .tx-table th:nth-child(2){width:125px}
.tx-ledger .tx-table th:last-child{width:140px}
.tx-ledger .tx-table .tx-desc{min-width:0;white-space:normal}
.tx-description{display:block;font-size:.76rem;color:var(--ink-2);overflow-wrap:anywhere}
.tx-row-tags{display:flex;align-items:center;gap:6px;flex-wrap:wrap;color:var(--ink-2);font-size:.73rem;margin:3px 0}
.tx-row-tags .badge{font-size:.67rem;padding:2px 6px;margin:0}
.tx-row-edit>summary{display:inline-block;padding:5px 0;color:var(--primary);font-size:.75rem;font-weight:700;cursor:pointer}
.tx-row-edit-fields{padding:10px;border:1px solid var(--border);border-radius:10px;background:var(--surface-2);display:grid;grid-template-columns:repeat(auto-fit,minmax(135px,1fr));gap:10px;margin:4px 0}
.tx-row-edit-fields>div,.tx-row-edit-fields label{display:grid;gap:4px;min-width:0}
.tx-row-edit-fields span{font-size:.72rem;color:var(--ink-2)}
.tx-row-edit-fields strong{font-size:.8rem;overflow-wrap:anywhere}
.tx-ledger .tx-row-edit-fields .tiny-select{width:100%;max-width:100%;min-height:40px;border:1px solid var(--border);background:var(--surface)}
.tx-spending-disclosure{padding:16px}
.tx-spending-disclosure>summary{cursor:pointer;font-weight:750;font-size:.9rem}
.tx-spending-disclosure>summary span{display:block;color:var(--ink-2);font-size:.78rem;font-weight:400;margin-top:3px}
.tx-spending-disclosure .tx-summary{margin-top:14px}
.tx-add-menu{position:relative}
.tx-add-menu-items{position:absolute;right:0;top:calc(100% + 6px);width:230px;max-width:85vw;padding:8px;display:grid;gap:6px;background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow-sm);z-index:30}
.tx-page .tx-add-menu-items .btn{justify-content:flex-start;font-size:.85rem}
.tx-add-menu>summary::-webkit-details-marker{display:none}
.tx-ledger .tx-table-card{border-radius:0 0 var(--radius) var(--radius)}
@media(max-width:620px){
 .tx-ledger .tx-results-toolbar{grid-template-columns:1fr auto;padding:12px;gap:10px}
 .tx-ledger .tx-inline-search{grid-column:1/-1;grid-row:2}
 .tx-ledger .tx-view-options{grid-column:2;grid-row:1}
 .tx-ledger .tx-table tr{display:grid;grid-template-columns:24px minmax(0,1fr) auto;gap:5px 8px;padding:12px}
 .tx-ledger .tx-table td{width:auto;min-width:0;padding:0;display:block;text-align:left}
 .tx-ledger .tx-table td:before{display:none}
 .tx-ledger .tx-table td:first-child{grid-column:1;grid-row:1/3;padding-top:3px}
 .tx-ledger .tx-table td:nth-child(2){grid-column:2;grid-row:1;color:var(--ink-2);font-size:.72rem}
 .tx-ledger .tx-table .tx-desc{grid-column:2/-1;grid-row:2}
 .tx-ledger .tx-table .tx-num{grid-column:3;grid-row:1;text-align:right;font-size:.83rem;font-weight:750}
 .tx-row-edit>summary{min-height:44px;display:flex;align-items:center}
 .tx-ledger .tx-row-edit-fields .tiny-select{min-height:44px;font-size:1rem}
 .tx-page .tx-actions{display:grid;grid-template-columns:1fr 1fr}
 .tx-page .tx-actions .btn{width:100%;font-size:.85rem;padding:10px}
 .tx-add-menu-items{left:0;right:auto}
 .tx-ledger .tx-bulk-bar{width:auto;margin:0 12px 10px}
}
.tx-page [data-tx-results]{display:grid;gap:12px;min-width:0}
.tx-filter-disclosure{padding:12px 14px}
.tx-filter-disclosure>summary,.tx-import-details>summary{cursor:pointer;font-size:.85rem;font-weight:750;color:var(--ink)}
.tx-filter-disclosure .tx-filters{padding:14px 0 0}
.tx-import-details>summary{padding:3px 2px;color:var(--ink-2);font-size:.78rem}
.tx-import-details[open] .tx-freshness{margin-top:8px}
.tx-bulk-bar[hidden]{display:none}
.tx-page .tx-bulk-bar{margin:0}
.tx-page .tx-table .tiny-select{border-color:transparent;background:transparent}
.tx-page .tx-table .tiny-select:hover,.tx-page .tx-table .tiny-select:focus{border-color:var(--border);background:var(--surface)}
.tx-page .dash-heading{margin-bottom:0;flex-wrap:wrap}
.tx-actions{display:flex;gap:8px;flex-wrap:wrap}
.tx-page .toolbar{margin-bottom:0}
.tx-count{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;margin-left:6px;border-radius:999px;background:var(--primary);color:#fff;font-size:.72rem;font-weight:800}

/* Status messages: loading, empty, error, success */
.form-message.info{background:var(--surface-2);color:var(--ink-2);border:1px solid var(--border)}
.tx-status{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.tx-empty{display:grid;gap:10px;justify-items:center}
.tx-empty h3,.tx-empty p{margin:0}

/* Filters */
.tx-filters{padding:14px;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;align-items:end}
.tx-filters .field{gap:5px;min-width:0}
.tx-filters .field label{font-size:.78rem;color:var(--ink-2)}
.tx-filters .input{padding:9px 10px;min-height:40px}
.tx-result-count{font-size:.85rem;color:var(--ink-2);margin:0}

/* The result controls are one compact decision bar instead of four loose controls. */
.tx-results-toolbar{display:grid;grid-template-columns:auto minmax(220px,1fr) minmax(170px,.72fr) 82px;gap:10px;align-items:end;padding:12px 14px}
.tx-results-count{display:grid;grid-template-columns:auto auto;align-items:baseline;column-gap:6px;min-width:112px;padding:4px 6px}
.tx-results-kicker{grid-column:1/-1;color:var(--ink-2);font-size:.7rem;font-weight:750;letter-spacing:.05em;text-transform:uppercase}
.tx-results-count strong{font-size:1.3rem;letter-spacing:-.04em;line-height:1.1}
.tx-results-count>span:last-child{color:var(--ink-2);font-size:.8rem}
.tx-inline-search{min-height:40px;display:flex;align-items:center;gap:8px;padding:0 11px;border:1px solid var(--border);border-radius:11px;background:var(--surface);color:var(--muted)}
.tx-inline-search:focus-within{border-color:#afa3ff;box-shadow:0 0 0 4px rgba(105,86,232,.10)}
.tx-inline-search input{width:100%;min-width:0;border:0;outline:0;background:transparent;color:var(--ink);caret-color:var(--primary)}
.tx-inline-search input::placeholder{color:var(--muted)}
.tx-list-control{display:grid;gap:4px;min-width:0;color:var(--ink-2);font-size:.73rem;font-weight:700}
.tx-list-control .input{min-height:40px;padding:8px 10px;font-size:.85rem}
.tx-page-size-control .input{font-variant-numeric:tabular-nums}

/* Totals stay informative, with category details available on demand. */
.tx-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:12px}
.tx-total{padding:16px;display:grid;gap:9px;min-width:0}
.tx-total-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.tx-total h2{margin:0;font-size:.86rem;color:var(--ink-2);font-weight:700}
.tx-total-head>span{padding:3px 7px;border-radius:999px;background:var(--surface-2);color:var(--ink-2);font-size:.7rem;font-weight:700;white-space:nowrap}
.tx-total>strong{font-size:1.7rem;letter-spacing:-.03em;line-height:1.1}
.tx-total>p{margin:0;font-size:.79rem;line-height:1.45}
.tx-category-breakdown{border-top:1px solid var(--border);margin-top:2px;padding-top:2px}
.tx-category-breakdown summary{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 0 8px;list-style:none;cursor:pointer;color:var(--ink);font-size:.82rem;font-weight:760}
.tx-category-breakdown summary::-webkit-details-marker{display:none}
.tx-category-breakdown summary::after{content:'›';color:var(--primary);font-size:1.2rem;line-height:1;transform:rotate(90deg);transition:transform .16s}
.tx-category-breakdown[open] summary::after{transform:rotate(-90deg)}
.tx-category-breakdown summary small{margin-left:auto;color:var(--ink-2);font-size:.72rem;font-weight:650}
.tx-total .category-list{padding:0 0 5px;gap:8px}
.tx-total .category-row{font-size:.78rem}

/* Tables */
.tx-table-card{padding:0;overflow:hidden}
.tx-table-scroll{overflow-x:auto}
.tx-table{width:100%;border-collapse:collapse;font-size:.88rem}
.tx-table th{position:sticky;top:0;background:var(--surface-2);color:var(--ink-2);font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;text-align:left;font-weight:750;padding:9px 12px;white-space:nowrap}
.tx-table td{padding:10px 12px;border-top:1px solid var(--border);vertical-align:middle;white-space:nowrap}
.tx-table .tx-notes{white-space:normal;min-width:170px}
.tx-table tbody tr:hover{background:color-mix(in srgb,var(--surface-2) 55%,transparent)}
.tx-table .tx-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.tx-table .tx-desc{min-width:220px;overflow-wrap:anywhere;white-space:normal}
.tx-in{color:#147f5c}
:root[data-theme="dark"] .tx-in{color:#6fe0b6}
.tx-table .badge{margin-left:6px;vertical-align:middle}
.tx-table .tiny-select{max-width:190px}
.tx-table-foot{margin:0;padding:12px;font-size:.85rem;color:var(--ink-2);border-top:1px solid var(--border)}
.tx-table .empty-state{padding:28px}

/* Transaction tools keep the existing data-* hooks independent of layout. */
.tx-freshness{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:13px 15px;margin:0;background:linear-gradient(135deg,color-mix(in srgb,var(--primary) 5%,var(--surface)),var(--surface))}
.tx-freshness>div{display:grid;gap:4px}.tx-freshness span,.tx-freshness p{font-size:.8rem;color:var(--ink-2)}
.tx-freshness strong{font-size:.88rem}.tx-freshness p{grid-column:1/-1;margin:0;padding-top:2px;border-top:1px solid color-mix(in srgb,var(--border) 70%,transparent)}
.tx-list-toolbar,.tx-bulk-bar,.tx-pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:12px 0}
.tx-list-controls,.tx-pagination>div{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.tx-list-controls label{display:grid;gap:4px;font-size:.875rem;color:var(--ink-2)}
.tx-list-controls .input{padding:8px 10px;min-height:40px}
.tx-sort-note{margin-top:-4px}
.tx-bulk-bar{width:fit-content;max-width:100%;justify-content:flex-start;background:var(--surface-2);border:1px solid var(--border);border-radius:12px;padding:8px 10px;font-size:.82rem}
.tx-bulk-bar .btn{white-space:nowrap}
.tx-pagination{padding:12px;margin:0;border-top:1px solid var(--border);font-size:.875rem}
.tx-pagination button:disabled{opacity:.5;cursor:default}
.tx-table input[type=checkbox],.tx-check-label input{width:18px;height:18px;accent-color:var(--primary);flex-shrink:0}
.tx-check-label{display:flex;gap:10px;align-items:flex-start;font-size:.9rem}
.tx-manual-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.tx-rules summary{cursor:pointer;font-weight:700;padding:4px 0}.tx-rules p{font-size:.875rem}
.tx-summary{align-items:start}

/* Notes on review rows */
.tx-note{display:block;font-size:.78rem;color:var(--ink-2)}
.tx-note.warn{color:#9a6700}
:root[data-theme="dark"] .tx-note.warn{color:#ffcf6b}
.tx-note.error{color:var(--danger)}
tr.tx-invalid{background:color-mix(in srgb,var(--danger) 6%,transparent)}
tr.tx-excluded td:not(:first-child){opacity:.55}

/* Lists: imports, possible and confirmed subscriptions */
.tx-panel{padding:16px;display:grid;gap:4px}
.tx-panel h2,.tx-panel h3{margin:0 0 6px;font-size:1rem}
.tx-row{display:flex;gap:12px;align-items:center;justify-content:space-between;padding:10px 0;border-top:1px solid var(--border);flex-wrap:wrap}
.tx-row:first-of-type{border-top:0}
.tx-row>div{min-width:0;overflow-wrap:anywhere}
.tx-row small{display:block;color:var(--ink-2)}
.tx-imports{width:min(100%,780px);justify-self:start;gap:0;padding:14px 16px}
.tx-panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:8px}
.tx-panel-kicker{display:block;margin-bottom:2px;color:var(--primary);font-size:.68rem;font-weight:850;letter-spacing:.09em;text-transform:uppercase}
.tx-panel-head h2{margin:0}
.tx-panel-count{min-width:27px;height:27px;padding:0 8px;display:grid;place-items:center;border-radius:999px;background:var(--surface-2);color:var(--primary);font-size:.78rem;font-weight:800}
.tx-import-row{display:grid;grid-template-columns:32px minmax(0,1fr) auto;gap:10px;padding:11px 0;flex-wrap:nowrap}
.tx-import-icon{width:30px;height:30px;display:grid;place-items:center;border-radius:9px;background:color-mix(in srgb,var(--primary) 10%,var(--surface));color:var(--primary)}
.tx-import-row strong{display:block;font-size:.88rem;overflow-wrap:anywhere}
.tx-import-row small{margin-top:2px;font-size:.76rem;line-height:1.45}
.tx-import-meta{margin-left:4px;white-space:nowrap}
.tx-remove-import{min-width:auto;align-self:center}
.tx-review{display:grid;gap:12px}
.tx-review>p{margin:0}
.tx-series{padding:16px;display:grid;grid-template-columns:minmax(0,1fr) minmax(170px,220px) auto;gap:14px;align-items:end}
.tx-series h3{margin:0 0 4px}
.tx-series p{margin:0;color:var(--ink-2);font-size:.85rem}

/* Import wizard: compact, review-first, and never horizontally scrollable. */
.modal.tx-modal{width:min(920px,calc(100vw - 32px));max-height:min(88dvh,760px);padding:20px;overflow-x:hidden;overscroll-behavior:contain}
.modal.tx-modal--upload{width:min(620px,calc(100vw - 32px))}
.modal.tx-modal--mapping{width:min(850px,calc(100vw - 32px))}
.modal.tx-modal--review{width:min(940px,calc(100vw - 32px))}
.tx-modal-head{margin-bottom:12px}
.tx-kicker{display:block;margin-bottom:4px;color:var(--primary);font-size:.68rem;font-weight:850;letter-spacing:.11em;text-transform:uppercase}
.tx-import-steps{display:flex;align-items:center;gap:0;list-style:none;margin:0 0 16px;padding:0}
.tx-import-steps li{position:relative;display:flex;align-items:center;gap:7px;min-width:0;flex:1;color:var(--muted);font-size:.74rem;font-weight:700}
.tx-import-steps li:not(:last-child)::after{content:'';height:1px;flex:1;margin:0 10px;background:var(--border)}
.tx-import-steps span{width:22px;height:22px;display:grid;place-items:center;flex:none;border:1px solid var(--border);border-radius:50%;font-size:.7rem;background:var(--surface)}
.tx-import-steps .is-active,.tx-import-steps .is-complete{color:var(--ink)}
.tx-import-steps .is-active span{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:0 4px 12px color-mix(in srgb,var(--primary) 30%,transparent)}
.tx-import-steps .is-complete span{background:color-mix(in srgb,var(--primary) 12%,var(--surface));border-color:color-mix(in srgb,var(--primary) 45%,var(--border));color:var(--primary)}
.tx-form{margin-top:0}
.tx-import-form{gap:12px}
.tx-import-settings{display:grid;grid-template-columns:minmax(0,1fr) 120px;gap:10px}
.tx-currency-field .input{text-transform:uppercase;text-align:center;font-weight:750;letter-spacing:.04em}
.tx-dropzone{display:grid;min-height:158px;align-content:center;gap:5px;justify-items:center;text-align:center;padding:20px 16px;border:1.5px dashed color-mix(in srgb,var(--primary) 40%,var(--border));border-radius:15px;background:linear-gradient(145deg,color-mix(in srgb,var(--primary) 5%,var(--surface)),var(--surface-2));cursor:pointer;transition:border-color .18s,background .18s,transform .18s}
.tx-dropzone:hover,.tx-dropzone.is-dragging{border-color:var(--primary);background:color-mix(in srgb,var(--primary) 9%,var(--surface));transform:translateY(-1px)}
.tx-dropzone-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:12px;background:color-mix(in srgb,var(--primary) 13%,var(--surface));color:var(--primary)}
.tx-dropzone>strong{font-size:.98rem}
.tx-dropzone>span:not(.tx-dropzone-icon):not(.tx-dropzone-action){color:var(--ink-2);font-size:.82rem}
.tx-dropzone-action{margin-top:5px;border:1px solid var(--border);border-radius:9px;padding:5px 10px;background:var(--surface);color:var(--ink);font-size:.8rem;font-weight:750}
.tx-import-note{margin:0;color:var(--ink-2);font-size:.8rem;text-align:center}
.tx-picker{position:relative;min-width:0}
.tx-picker-trigger{min-height:44px;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 10px;list-style:none;cursor:pointer;user-select:none}
.tx-picker-trigger::-webkit-details-marker{display:none}
.tx-picker-trigger>[data-tx-picker-label]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tx-picker-chevron{display:grid;place-items:center;flex:none;color:var(--ink-2);transform:rotate(90deg);transition:transform .16s,color .16s}
.tx-picker[open] .tx-picker-chevron{color:var(--primary);transform:rotate(-90deg)}
.tx-picker-trigger:focus-visible{border-color:#afa3ff;box-shadow:0 0 0 4px rgba(105,86,232,.10)}
.tx-picker[data-picker-disabled]{opacity:.54}
.tx-picker[data-picker-disabled] .tx-picker-trigger{cursor:not-allowed;background:var(--surface-2)}
.tx-picker-menu{position:absolute;z-index:24;top:calc(100% + 6px);left:0;right:0;display:grid;gap:2px;max-height:min(260px,calc(100dvh - 176px));overflow:auto;padding:5px;border:1px solid var(--border);border-radius:12px;background:var(--surface);box-shadow:var(--shadow-sm)}
.tx-picker-option{width:100%;min-width:0;display:flex;align-items:center;justify-content:space-between;gap:10px;border:0;border-radius:8px;padding:8px 9px;background:transparent;color:var(--ink);font:inherit;font-size:.84rem;line-height:1.32;text-align:left;cursor:pointer}
.tx-picker-option>span:first-child{min-width:0;overflow-wrap:anywhere}
.tx-picker-option:hover,.tx-picker-option:focus-visible{background:var(--surface-2);outline:0}
.tx-picker-option.is-selected{background:color-mix(in srgb,var(--primary) 14%,var(--surface));color:var(--primary);font-weight:750}
.tx-picker-check{display:grid;place-items:center;flex:none;opacity:0}.tx-picker-option.is-selected .tx-picker-check{opacity:1}
.tx-picker--header .tx-picker-menu{max-height:min(250px,34dvh)}
.tx-picker--header .tx-picker-option{align-items:flex-start}
.tx-mapping-form{gap:12px}
.tx-mapping-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.tx-mapping-list{display:grid;gap:6px;max-height:min(44dvh,390px);overflow-y:auto;overflow-x:hidden;padding:5px;border:1px solid var(--border);border-radius:14px;background:color-mix(in srgb,var(--surface-2) 45%,var(--surface))}
.tx-mapping-row{display:grid;grid-template-columns:minmax(115px,.8fr) minmax(160px,1.15fr) minmax(180px,1fr);gap:12px;align-items:center;padding:10px;border-radius:10px;background:var(--surface)}
.tx-mapping-row>*,.tx-mapping-samples>div{min-width:0}
.tx-mapping-column,.tx-mapping-samples,.tx-mapping-role{display:grid;gap:3px}
.tx-mapping-column>span,.tx-mapping-samples>span,.tx-mapping-role>span{color:var(--muted);font-size:.69rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase}
.tx-mapping-column strong{overflow-wrap:anywhere;font-size:.9rem}
.tx-mapping-samples>div{display:grid;gap:1px}
.tx-mapping-samples small{overflow:hidden;color:var(--ink-2);font-size:.78rem;text-overflow:ellipsis;white-space:nowrap}
.tx-mapping-role .tx-picker-trigger{min-height:40px;padding:8px 10px}
.tx-mapping-list .tx-picker-menu,.tx-review-list .tx-picker-menu,.tx-possible-row .tx-picker-menu{position:static;margin-top:6px;max-height:210px;box-shadow:none}
.tx-review-summary{display:flex;gap:8px;margin:0 0 12px}
.tx-review-summary>div{min-width:0;flex:1;display:flex;align-items:baseline;gap:6px;padding:9px 11px;border:1px solid var(--border);border-radius:11px;background:var(--surface-2)}
.tx-review-summary strong{font-size:1rem;color:var(--primary)}
.tx-review-summary span{color:var(--ink-2);font-size:.78rem;font-weight:650}
.tx-review-summary .has-warning strong{color:var(--danger)}
.tx-possible{display:block;margin:0 0 12px;border:1px solid var(--border);border-radius:13px;background:var(--surface-2);overflow:hidden}
.tx-possible summary{display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;list-style:none;padding:10px 12px}
.tx-possible summary::-webkit-details-marker{display:none}
.tx-possible summary>span{display:grid;gap:1px}
.tx-possible summary small{color:var(--ink-2);font-size:.75rem}
.tx-possible summary>b{display:grid;place-items:center;min-width:22px;height:22px;border-radius:999px;background:color-mix(in srgb,var(--primary) 14%,var(--surface));color:var(--primary);font-size:.75rem}
.tx-possible-list{display:grid;gap:7px;padding:0 10px 10px}
.tx-possible-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(135px,155px) minmax(135px,155px);gap:8px;align-items:center;padding:9px 10px;border:1px solid var(--border);border-radius:10px;background:var(--surface)}
.tx-possible-row small{display:block;color:var(--ink-2);font-size:.77rem}
.tx-possible-row .tx-picker-trigger{min-height:40px;padding:8px 9px}
.tx-review-list{max-height:min(43dvh,350px);overflow-y:auto;overflow-x:hidden;border:1px solid var(--border);border-radius:14px;background:var(--surface);scrollbar-gutter:stable;overscroll-behavior:contain}
.tx-review-list-head{display:grid;grid-template-columns:minmax(0,1fr) 108px 242px;gap:12px;padding:8px 12px 8px 48px;border-bottom:1px solid var(--border);background:var(--surface-2);color:var(--muted);font-size:.68rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase}
.tx-review-row{display:grid;grid-template-columns:26px minmax(0,1fr) minmax(80px,108px) minmax(230px,242px);gap:12px;align-items:center;padding:10px 12px;border-bottom:1px solid var(--border);transition:opacity .16s,background .16s}
.tx-review-row:last-child{border-bottom:0}
.tx-review-row:hover{background:color-mix(in srgb,var(--surface-2) 58%,transparent)}
.tx-review-row .tx-row-check{align-self:start;padding-top:3px}
.tx-review-main{display:grid;gap:2px;min-width:0}
.tx-review-meta{display:flex;gap:7px;flex-wrap:wrap;color:var(--ink-2);font-size:.72rem}
.tx-review-meta span+span:before{content:'·';margin-right:7px;color:var(--muted)}
.tx-review-description{overflow-wrap:anywhere;font-size:.87rem;line-height:1.35}
.tx-review-notes{display:grid;gap:2px;margin-top:1px}
.tx-review-amount{align-self:center;white-space:nowrap;text-align:right;font-size:.88rem;font-variant-numeric:tabular-nums}
.tx-review-fields{display:grid;grid-template-columns:94px minmax(0,1fr);gap:6px;min-width:0}
.tx-review-fields .tx-picker-trigger{width:100%;min-height:38px;padding:6px 8px;font-size:.8rem}
.tx-review-row.tx-excluded{opacity:.52;background:color-mix(in srgb,var(--surface-2) 70%,transparent)}
.tx-review-invalid{grid-template-columns:26px minmax(0,1fr);background:color-mix(in srgb,var(--danger) 6%,var(--surface))}
.tx-review-invalid:hover{background:color-mix(in srgb,var(--danger) 8%,var(--surface))}
.tx-invalid-mark{width:18px;height:18px;display:grid;place-items:center;border-radius:50%;background:color-mix(in srgb,var(--danger) 16%,var(--surface));color:var(--danger);font-size:.72rem;font-weight:900}
.tx-modal .modal-actions{position:sticky;bottom:0;z-index:2;margin-top:12px;padding:12px 0 0;border-top:1px solid color-mix(in srgb,var(--border) 55%,transparent);background:var(--surface)}

@media(max-width:860px){
  .tx-results-toolbar{grid-template-columns:minmax(120px,.55fr) minmax(200px,1fr) minmax(150px,.72fr)}
  .tx-page-size-control{grid-column:3}
}
@media(max-width:760px){
  .tx-results-toolbar{grid-template-columns:minmax(110px,.55fr) minmax(0,1fr)}
  .tx-inline-search{grid-column:2}
  .tx-list-control{grid-column:auto}
  .tx-page-size-control{grid-column:auto}
  .tx-review-list-head{display:none}
  .tx-review-row{grid-template-columns:24px minmax(0,1fr) auto;gap:9px}
  .tx-review-fields{grid-column:2/-1;grid-template-columns:1fr 1fr}
  .tx-review-invalid{grid-template-columns:24px minmax(0,1fr)}
  .tx-possible-row{grid-template-columns:minmax(0,1fr) minmax(132px,1fr)}
  .tx-possible-row>div{grid-column:1/-1}
}

/* Phones: tables become stacked cards, controls take the full width */
@media(max-width:620px){
  .tx-results-toolbar{grid-template-columns:1fr 92px;gap:9px;padding:12px}
  .tx-results-count{padding:2px 3px}.tx-inline-search{grid-column:1/-1;grid-row:2}
  .tx-list-control{grid-row:3}.tx-list-control .input{font-size:.82rem}
  .tx-page-size-control{grid-column:2}
  .tx-freshness{grid-template-columns:1fr}.tx-manual-grid{grid-template-columns:1fr}
  .tx-list-controls{width:100%}.tx-list-controls label{flex:1;min-width:130px}
  .tx-bulk-bar{width:100%;gap:7px}.tx-bulk-bar>span{width:100%}.tx-bulk-bar .btn{flex:1}
  .tx-imports{width:100%}.tx-import-row{grid-template-columns:30px minmax(0,1fr)}.tx-remove-import{grid-column:2;justify-self:start}.tx-import-meta{display:block;margin:2px 0 0;white-space:normal}
  .tx-pagination>div{width:100%;justify-content:space-between}
  .tx-actions{width:100%}.tx-actions .btn{flex:1}
  .tx-page .dash-heading>.tx-actions{display:flex}
  .tx-filters{grid-template-columns:1fr 1fr}
  .tx-series{grid-template-columns:1fr}
  .modal.tx-modal{width:calc(100vw - 24px);max-height:calc(100dvh - 24px);padding:16px}
  .tx-import-steps{margin-bottom:13px}.tx-import-steps li{gap:5px;font-size:.68rem}.tx-import-steps li:not(:last-child)::after{margin:0 5px}.tx-import-steps span{width:20px;height:20px}
  .tx-import-settings,.tx-mapping-options{grid-template-columns:1fr}
  .tx-picker-menu{position:static;margin-top:6px;max-height:min(230px,34dvh);box-shadow:none}
  .tx-picker-option{padding:9px 10px;font-size:.86rem}
  .tx-dropzone{min-height:142px}
  .tx-mapping-row{grid-template-columns:1fr;gap:8px;padding:10px}
  .tx-mapping-samples>div{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.tx-mapping-samples small{white-space:normal;overflow-wrap:anywhere}
  .tx-review-summary{flex-direction:column}.tx-review-summary>div{width:100%}
  .tx-possible-row{grid-template-columns:1fr 1fr}.tx-possible-row>div{grid-column:1/-1}
  .tx-review-list{max-height:42dvh}
  .tx-review-list-head{display:none}
  .tx-review-row{grid-template-columns:24px minmax(0,1fr) auto;gap:9px;padding:11px 10px}
  .tx-review-fields{grid-column:2/-1;grid-template-columns:1fr 1fr}
  .tx-review-amount{font-size:.83rem}
  .tx-review-invalid{grid-template-columns:24px minmax(0,1fr)}
  .tx-table thead{display:none}
  .tx-table,.tx-table tbody,.tx-table tr,.tx-table td{display:block;width:100%}
  .tx-table tr{padding:10px 12px;border-top:1px solid var(--border)}
  .tx-table td{border:0;padding:4px 0;display:flex;justify-content:space-between;align-items:center;gap:12px;text-align:right}
  .tx-table td::before{content:attr(data-label);color:var(--ink-2);font-size:.75rem;font-weight:700;text-align:left;flex:none}
  .tx-table td:not([data-label])::before{content:none}
  .tx-table .tx-desc{min-width:0;display:block;text-align:left;font-weight:650}
  .tx-table .tiny-select{max-width:60%}
  .tx-table .tx-notes{display:block;text-align:left;min-width:0}
  .tx-modal .modal-actions{bottom:0;padding-top:10px}
}
