/* ==========================================================================
   GST reconciliation — page styles.
   Loaded after style.css, tools-style.css and tools-v2.css (it uses their variables).
   Prefix gst- : setup screen, results screen, GSTR-3B view, download form, small helpers.
   Status colours match the charts: matched #2a9d8f, amounts differ #c8553d, probable #d4af37,
   only in books #002b49, only in portal #6b7f99.
   ========================================================================== */

.gst-sr { position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
#gst-setup button, #gst-results button, .gst-pair button, .gst-toast button { font-family: var(--font-body); }
#gst-setup, #gst-results { color: var(--tv2-ink); }
#gst-results[hidden] { display: none; }
#gst-results { margin-top: 8px; }
.gst-link { background: none; border: none; padding: 0; color: var(--tv2-info); font: inherit; font-weight: 600; text-decoration: underline; text-underline-offset: 2px; cursor: pointer; }
.gst-link:hover { color: var(--tv2-navy); }
.gst-hint { font-size: .82rem; color: var(--tv2-ink-3); line-height: 1.5; }

/* ----------------------------------------------------------------- setup */
.gst-step { margin: 0 0 26px; }
.gst-step > h3 {
    display: flex; align-items: center; gap: 12px;
    font-family: var(--font-heading); font-size: 1.2rem; font-weight: 600; color: var(--tv2-navy); margin: 0 0 14px;
}
.gst-n {
    flex: none; display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 50%;
    background: var(--tv2-navy); color: #fff; font: 700 .82rem/1 var(--font-body);
}
.gst-sub { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; font-family: var(--font-heading); font-size: 1.02rem; color: var(--tv2-navy); margin: 22px 0 12px; }
.gst-sub span { font: 500 .82rem var(--font-body); color: var(--tv2-ink-3); }

.gst-modes { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(230px, 100%), 1fr)); gap: 12px; }
.gst-mode {
    position: relative; text-align: left; background: #fff; border: 1.5px solid var(--tv2-line-2); border-radius: 12px;
    padding: 14px 16px 15px; cursor: pointer; display: flex; flex-direction: column; gap: 5px; color: var(--tv2-ink);
    transition: border-color .15s, box-shadow .15s, background .15s;
}
.gst-mode:hover { border-color: var(--tv2-navy); }
.gst-mode:focus-visible { outline: 3px solid rgba(212,175,55,.6); outline-offset: 2px; }
.gst-mode.on { border-color: var(--tv2-navy); background: #f4f8fc; box-shadow: inset 4px 0 0 var(--tv2-gold); padding-left: 20px; }
.gst-mode-t { font-weight: 700; font-size: .98rem; color: var(--tv2-navy); display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.gst-mode-t i { font: 700 .66rem/1 var(--font-body); color: var(--tv2-gold-d); border: 1px solid var(--tv2-gold); border-radius: 999px; padding: 3px 8px; }
.gst-mode-q { font-size: .82rem; line-height: 1.5; color: var(--tv2-ink-2); }

.gst-zones { display: grid; grid-template-columns: 1fr; gap: 16px; }
.gst-zones.two { grid-template-columns: repeat(auto-fit, minmax(min(420px, 100%), 1fr)); }
.gst-zone-card { border: 1px solid var(--tv2-line); border-radius: 14px; padding: 16px 18px 14px; background: #fff; min-width: 0; }
.gst-zone-card.opt { background: var(--tv2-tint); }
.gst-zone-h { display: flex; gap: 12px; align-items: flex-start; margin-bottom: 12px; }
.gst-zone-h .gst-n { margin-top: 1px; background: var(--tv2-navy-m); }
.gst-zones.two .gst-zone-h { min-height: 64px; }
.gst-zone-h h4 { margin: 0; font: 700 1rem/1.35 var(--font-body); color: var(--tv2-navy); }
.gst-zone-h h4 em { font: 600 .7rem/1 var(--font-body); font-style: normal; color: var(--tv2-ink-2); background: var(--tv2-line); border-radius: 999px; padding: 3px 8px; margin-left: 6px; vertical-align: 2px; }
.gst-zone-h p { margin: 3px 0 0; font-size: .82rem; color: var(--tv2-ink-3); line-height: 1.5; }

.gst-zone {
    position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; text-align: center;
    border: 2px dashed #b7c4d2; border-radius: 12px; background: var(--tv2-tint); padding: 20px 14px; cursor: pointer;
    transition: border-color .15s, background .15s;
}
.gst-zone:hover { border-color: var(--tv2-navy); background: #f0f5fa; }
.gst-zone.drag { border-color: var(--tv2-gold); background: #fffaf0; }
.gst-zone:focus-within { outline: 3px solid rgba(212,175,55,.6); outline-offset: 2px; }
.gst-zone.has { padding: 12px 14px; border-style: solid; border-width: 1px; border-color: var(--tv2-line-2); background: #fff; }
.gst-zone input[type="file"] { position: absolute; width: 1px; height: 1px; opacity: 0; overflow: hidden; }
.gst-zone .icon { width: 26px; height: 26px; color: var(--tv2-navy-m); }
.gst-zone b { font-size: .9rem; color: var(--tv2-navy); }
.gst-zone span { font-size: .76rem; color: var(--tv2-ink-3); letter-spacing: .02em; }

.gst-files { list-style: none; margin: 12px 0 0; padding: 0; display: grid; gap: 8px; }
.gst-file { border: 1px solid var(--tv2-line); border-left: 4px solid var(--tv2-good); border-radius: 10px; background: #fff; padding: 9px 12px; }
.gst-file.warn { border-left-color: #d98a00; background: #fffaf0; }
.gst-file.bad { border-left-color: var(--tv2-bad); background: #fff8f7; }
.gst-file.busy { border-left-color: var(--tv2-info); }
.gst-file-main { display: flex; align-items: center; gap: 10px; }
.gst-file-ico { flex: none; width: 22px; height: 22px; display: inline-flex; align-items: center; justify-content: center; font-weight: 800; color: var(--tv2-good); }
.gst-file-ico .icon { width: 20px; height: 20px; }
.gst-file.warn .gst-file-ico { color: #d98a00; } .gst-file.bad .gst-file-ico { color: var(--tv2-bad); } .gst-file.busy .gst-file-ico { color: var(--tv2-info); }
.gst-file-txt { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.gst-file-txt b { font-size: .88rem; color: var(--tv2-ink); overflow-wrap: anywhere; }
.gst-file-txt span { font-size: .78rem; color: var(--tv2-ink-3); }
.gst-x { flex: none; width: 30px; height: 30px; border-radius: 50%; border: 1px solid transparent; background: transparent; color: var(--tv2-ink-3); font-size: 1.25rem; line-height: 1; cursor: pointer; }
.gst-x:hover { background: var(--tv2-bad-bg); color: var(--tv2-bad); }
.gst-x:focus-visible { outline: 3px solid rgba(212,175,55,.6); }
.gst-file-err { margin-top: 7px; font-size: .82rem; line-height: 1.5; color: #8b1d17; }
.gst-file-warn { margin-top: 7px; font-size: .8rem; line-height: 1.5; color: #6a4300; }
.gst-period { display: block; margin-top: 9px; font-size: .8rem; }
.gst-period span { display: block; font-weight: 600; color: var(--tv2-ink-2); margin-bottom: 4px; }
.gst-period select, .gst-map-f select, .gst-b3-top select, .gst-b3-top input, .gst-settings-body input, .gst-sort select, .gst-search input {
    width: 100%; min-height: 40px; padding: 7px 11px; font: 500 .88rem var(--font-body); color: var(--tv2-ink);
    border: 1px solid var(--tv2-line-2); border-radius: 9px; background: #fff;
}
.gst-period select:focus, .gst-map-f select:focus, .gst-b3-top select:focus, .gst-b3-top input:focus, .gst-settings-body input:focus, .gst-sort select:focus, .gst-search input:focus,
.gst-b3-table input:focus { outline: none; border-color: var(--tv2-navy); box-shadow: 0 0 0 3px rgba(212,175,55,.35); }
.gst-period small, .gst-map-f small, .gst-settings-body small { display: block; margin-top: 4px; color: var(--tv2-ink-3); font-size: .74rem; line-height: 1.45; }

.gst-map, .gst-help, .gst-settings, .gst-notes { margin-top: 10px; font-size: .82rem; }
.gst-map > summary, .gst-help > summary, .gst-settings > summary, .gst-notes > summary { cursor: pointer; color: var(--tv2-ink-2); line-height: 1.5; padding: 3px 0; }
.gst-help > summary, .gst-settings > summary { font-weight: 600; color: var(--tv2-info); }
.gst-settings { border: 1px solid var(--tv2-line); border-radius: 12px; padding: 8px 16px; margin: 0 0 18px; background: #fff; }
.gst-settings > summary { font-size: .88rem; color: var(--tv2-navy); } .gst-settings > summary .gst-link { font-weight: 500; text-decoration: none; color: var(--tv2-ink-3); margin-left: 6px; }
.gst-settings-body { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr)); gap: 16px 24px; padding: 10px 0 8px; }
.gst-settings-body label > span { display: block; font-weight: 600; color: var(--tv2-ink-2); margin-bottom: 5px; font-size: .82rem; }
.gst-map-body { margin-top: 8px; padding: 12px; border: 1px solid var(--tv2-line); border-radius: 10px; background: var(--tv2-tint); }
.gst-map-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(210px, 100%), 1fr)); gap: 10px 14px; }
.gst-map-f { display: block; min-width: 0; } .gst-map-f.wide { margin-bottom: 12px; }
.gst-map-f > span { display: block; font-weight: 600; font-size: .78rem; color: var(--tv2-ink-2); margin-bottom: 3px; }
.gst-help p, .gst-help-l { margin: 6px 0 0; line-height: 1.6; color: var(--tv2-ink-2); }
.gst-help-l { font-size: .82rem; }

.gst-check { display: flex; align-items: center; gap: 9px; margin: 14px 0 6px; font-size: .88rem; color: var(--tv2-ink-2); cursor: pointer; }
.gst-check input { width: 18px; height: 18px; }
.gst-b3 { margin: 10px 0 8px; }
.gst-b3-top { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr)); gap: 12px 18px; margin-bottom: 12px; }
.gst-b3-top label > span { display: block; font-weight: 600; font-size: .8rem; color: var(--tv2-ink-2); margin-bottom: 4px; }
.gst-b3 .tool-table-container { overflow-x: auto; }
.gst-b3-table { width: 100%; min-width: 760px; border-collapse: collapse; font-size: .82rem; }
.gst-b3-table th { background: #eef2f6; color: var(--tv2-navy); font-weight: 700; font-size: .74rem; padding: 8px 8px; border-bottom: 2px solid var(--tv2-navy); text-align: left; }
.gst-b3-table th:nth-child(n+3) { text-align: right; }
.gst-b3-table td { padding: 5px 8px; border-bottom: 1px solid var(--tv2-line); vertical-align: middle; }
.gst-b3-table td:first-child { font-weight: 700; color: var(--tv2-navy); white-space: nowrap; }
.gst-b3-table td.na { color: #b9c4d0; text-align: center; background: #fafbfc; }
.gst-b3-table input { width: 100%; min-width: 84px; text-align: right; min-height: 34px; padding: 4px 8px; border: 1px solid var(--tv2-line-2); border-radius: 7px; font: 500 .84rem var(--font-body); font-variant-numeric: tabular-nums; }

.gst-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 12px 16px; }
.gst-run { min-width: 180px; min-height: 46px; font-size: .96rem; }
.gst-bar {
    display: flex; align-items: center; justify-content: space-between; gap: 12px 18px; flex-wrap: wrap;
    background: var(--tv2-tint); border: 1px solid var(--tv2-line); border-left: 4px solid var(--tv2-gold); border-radius: 12px; padding: 12px 16px; margin-bottom: 18px;
}
.gst-bar b { display: block; color: var(--tv2-navy); font-size: .95rem; }
.gst-bar span { font-size: .8rem; color: var(--tv2-ink-3); }
.gst-bar-btns { display: flex; gap: 8px; flex-wrap: wrap; }

.gst-busy { position: fixed; inset: 0; background: rgba(0, 20, 36, .55); z-index: 25000; display: flex; align-items: center; justify-content: center; padding: 18px; }
.gst-busy[hidden] { display: none; }
.gst-busy > div { background: #fff; border-radius: 14px; padding: 20px 26px; display: flex; align-items: center; gap: 14px; font-weight: 600; color: var(--tv2-navy); box-shadow: 0 20px 60px rgba(0,0,0,.3); }
.gst-spin { width: 22px; height: 22px; border-radius: 50%; border: 3px solid var(--tv2-line-2); border-top-color: var(--tv2-gold); animation: gst-spin .8s linear infinite; }
@keyframes gst-spin { to { transform: rotate(360deg); } }

/* --------------------------------------------------------------- results: header, banners */
.gst-res-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 14px 24px; flex-wrap: wrap; margin: 4px 0 6px; padding-top: 6px; border-top: 1px solid var(--tv2-line); }
.gst-res-head h3 { margin: 14px 0 2px; font-family: var(--font-heading); font-size: 1.5rem; color: var(--tv2-navy); }
.gst-res-sub { margin: 0; font-size: .86rem; color: var(--tv2-ink-3); }
.gst-dl { display: flex; gap: 10px; flex-wrap: wrap; }
.gst-dl-note { margin: 4px 0 16px; font-size: .78rem; color: var(--tv2-ink-3); }
.gst-sample { display: flex; align-items: center; justify-content: space-between; gap: 12px 18px; flex-wrap: wrap; }
.gst-sample > div { flex: 1 1 320px; }
.gst-notes { margin: 0 0 18px; padding: 10px 14px; background: var(--tv2-tint); border: 1px solid var(--tv2-line); border-radius: 10px; }
.gst-notes ul { margin: 6px 0 4px 18px; line-height: 1.6; color: var(--tv2-ink-2); }
.gst-disc { margin-top: 26px; }

/* key figures: each one is a button that opens the matching list */
.gst-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(156px, 100%), 1fr)); gap: 12px; margin: 0 0 24px; }
.gst-kpi { text-align: left; width: 100%; font: inherit; cursor: pointer; transition: border-color .15s, box-shadow .15s, transform .15s; }
.gst-kpi:hover { box-shadow: 0 6px 18px rgba(10,30,50,.09); transform: translateY(-1px); }
.gst-kpi:focus-visible { outline: 3px solid rgba(212,175,55,.65); outline-offset: 2px; }

/* what to do first */
.gst-insights { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(340px, 100%), 1fr)); gap: 14px; }
.gst-ins { background: #fff; border: 1px solid var(--tv2-line); border-left: 4px solid var(--tv2-info); border-radius: 12px; padding: 14px 16px 15px; display: flex; flex-direction: column; align-items: flex-start; gap: 9px; }
.gst-ins.bad { border-left-color: var(--tv2-bad); } .gst-ins.warn { border-left-color: #d98a00; } .gst-ins.good { border-left-color: var(--tv2-good); }
.gst-ins-h { display: flex; align-items: flex-start; gap: 6px 10px; flex-wrap: wrap; width: 100%; }
.gst-ins h5 { flex: 1 1 180px; margin: 0; font: 700 .95rem/1.4 var(--font-body); color: var(--tv2-navy); }
.gst-ins-amt { font-family: var(--tv2-num); font-size: 1.05rem; color: var(--tv2-navy); white-space: nowrap; }
.gst-ins p { margin: 0; font-size: .86rem; line-height: 1.6; color: var(--tv2-ink-2); }
.gst-ins .gst-ins-act { color: var(--tv2-ink); background: var(--tv2-tint); border-radius: 8px; padding: 8px 11px; width: 100%; }
.gst-more { margin-top: 14px; }

/* charts */
.gst-charts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.gst-cp { min-width: 0; }
.gst-cp.c-wide { grid-column: 1 / -1; }
.gst-cp .tv2-sub { margin-top: -4px; }
.gst-chart { min-height: 120px; }
.gst-chart-note { margin: 8px 0 0; font-size: .76rem; color: var(--tv2-ink-3); line-height: 1.5; }
.gst-chart-empty { margin: 30px 0; text-align: center; font-size: .86rem; color: var(--tv2-ink-3); }
.gst-cp.c-status .gst-chart { display: flex; align-items: center; justify-content: center; gap: 10px 26px; flex-wrap: wrap; }
.gst-cp.c-status .gst-chart > div[style] { flex: 0 1 240px; min-width: 170px; margin: 0; }
.gst-cp.c-status .tv2-legend { flex: 1 1 170px; flex-direction: column; align-items: flex-start; gap: 10px; margin-top: 0; }
.gst-bridge td:last-child { white-space: nowrap; }
.gst-bridge tr.sub td:last-child { color: var(--tv2-ink-2); }

/* --------------------------------------------------------------- tabs, lists */
.gst-docs > h4 { margin-bottom: 14px; }
.gst-tabs { display: flex; flex-wrap: wrap; gap: 8px; padding-bottom: 16px; border-bottom: 1px solid var(--tv2-line); margin: 0 0 18px; }
.gst-tabsel { display: none; margin: 0 0 16px; }
.gst-tabsel select { width: 100%; min-height: 46px; padding: 8px 12px; font: 700 .94rem var(--font-body); color: var(--tv2-navy); border: 1.5px solid var(--tv2-navy); border-radius: 10px; background: #fff; }
.gst-tab {
    flex: none; background: #fff; border: 1px solid var(--tv2-line-2); border-radius: 999px; padding: 7px 8px 7px 14px; font-size: .84rem; font-weight: 600;
    color: var(--tv2-ink-2); cursor: pointer; white-space: nowrap; transition: background .12s, border-color .12s, color .12s;
}
.gst-tab:hover { background: var(--tv2-tint); border-color: var(--tv2-navy); color: var(--tv2-navy); }
.gst-tab:focus-visible { outline: 3px solid rgba(212,175,55,.65); outline-offset: 2px; }
.gst-tab.on { background: var(--tv2-navy); border-color: var(--tv2-navy); color: #fff; box-shadow: inset 0 -3px 0 var(--tv2-gold); }
.gst-tab .n { display: inline-block; min-width: 24px; margin-left: 6px; padding: 2px 7px; font-size: .72rem; font-weight: 700; line-height: 1.4; text-align: center; border-radius: 999px; background: var(--tv2-line); color: var(--tv2-ink-2); }
.gst-tab.on .n { background: rgba(255,255,255,.2); color: #fff; }
.gst-tab.bad:not(.on) .n { background: var(--tv2-bad-bg); color: var(--tv2-bad); }
.gst-tab.warn:not(.on) .n { background: var(--tv2-warn-bg); color: var(--tv2-warn); }
.gst-tabnote { margin: 0 0 14px; font-size: .86rem; line-height: 1.6; color: var(--tv2-ink-2); max-width: 78ch; }
.gst-tools { display: flex; flex-wrap: wrap; gap: 10px 14px; align-items: flex-end; margin: 0 0 14px; }
.gst-search { flex: 1 1 280px; display: block; }
.gst-search input { padding-left: 12px; }
.gst-sort { display: flex; flex-direction: column; gap: 4px; flex: 0 1 230px; }
.gst-sort span { font-size: .74rem; font-weight: 600; color: var(--tv2-ink-3); }
.gst-count { font-size: .8rem; color: var(--tv2-ink-3); margin: 0 0 8px; }
.gst-empty { padding: 30px 18px; text-align: center; color: var(--tv2-ink-3); font-size: .9rem; border: 1px dashed var(--tv2-line-2); border-radius: 12px; background: var(--tv2-tint); list-style: none; }

.gst-list-head, .gst-doc-sum {
    display: grid; grid-template-columns: minmax(0, 2.1fr) minmax(0, 1.35fr) minmax(0, 1.05fr) minmax(0, 1.05fr) minmax(0, 1.55fr) minmax(128px, 160px) 18px; gap: 0 14px; align-items: center;
}
.gst-list-head { padding: 0 16px 8px 20px; font-size: .74rem; font-weight: 700; color: var(--tv2-ink-3); border-bottom: 2px solid var(--tv2-navy); }
.gst-list-head span:nth-child(3), .gst-list-head span:nth-child(4) { text-align: right; }
.gst-list { list-style: none; margin: 0; padding: 0; }
.gst-doc { border-bottom: 1px solid var(--tv2-line); border-left: 4px solid var(--tv2-line-2); background: #fff; }
.gst-doc.st-matched { border-left-color: #2a9d8f; } .gst-doc.st-mismatch { border-left-color: #c8553d; } .gst-doc.st-probable { border-left-color: #d4af37; }
.gst-doc.st-onlyBooks { border-left-color: #002b49; } .gst-doc.st-onlyPortal { border-left-color: #6b7f99; }
.gst-doc.scoped { border-left-style: dashed; background: #fafbfc; }
.gst-doc-sum { width: 100%; background: transparent; border: none; text-align: left; padding: 12px 16px 12px 16px; cursor: pointer; color: inherit; position: relative; }
.gst-doc-sum:hover { background: #f6f9fc; }
.gst-doc-sum:focus-visible { outline: 3px solid rgba(212,175,55,.65); outline-offset: -3px; }
.gst-doc.open > .gst-doc-sum { background: #f4f8fc; }
.gst-doc-sum b { display: block; font-size: .88rem; font-weight: 700; color: var(--tv2-ink); line-height: 1.35; overflow-wrap: anywhere; }
.gst-doc-sum small { display: block; font-size: .74rem; color: var(--tv2-ink-3); line-height: 1.4; margin-top: 1px; overflow-wrap: anywhere; }
.gst-doc-sum .c-party b { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.gst-doc-sum .c-books, .gst-doc-sum .c-portal { text-align: right; font-variant-numeric: tabular-nums; }
.gst-doc-sum .c-books b, .gst-doc-sum .c-portal b { font-weight: 600; }
.gst-doc-sum .nil, .gst-cmp .nil, .gst-3b-tbl .nil, .gst-line .nil { color: #9aa8b8; }
.gst-doc-sum .c-res { padding-left: 6px; }
.gst-doc-sum .c-res b { font-weight: 700; } .gst-doc-sum .c-res.ok b { color: var(--tv2-good); } .gst-doc-sum .c-res.bad b { color: var(--tv2-bad); }
.gst-doc-sum .c-res.warn b { color: var(--tv2-warn); } .gst-doc-sum .c-res.muted b { color: var(--tv2-ink-2); font-weight: 600; }
.c-chev { width: 9px; height: 9px; border-right: 2px solid var(--tv2-ink-3); border-bottom: 2px solid var(--tv2-ink-3); transform: rotate(45deg); transition: transform .15s; justify-self: end; margin-right: 3px; }
.gst-doc.open .c-chev { transform: rotate(-135deg); }
.gst-doc-detail { padding: 6px 16px 18px 20px; border-top: 1px dashed var(--tv2-line); background: #fff; }
.gst-doc-detail[hidden] { display: none; }

.gst-detail { display: grid; gap: 14px; padding-top: 10px; }
.gst-detail .tool-table-container { overflow-x: auto; }
.gst-cmp { width: 100%; border-collapse: collapse; font-size: .84rem; font-variant-numeric: tabular-nums; }
.gst-cmp th, .gst-cmp td { padding: 7px 11px; border-bottom: 1px solid var(--tv2-line); text-align: left; vertical-align: top; }
.gst-cmp thead th { background: #eef2f6; color: var(--tv2-navy); font-weight: 700; font-size: .76rem; border-bottom: 2px solid var(--tv2-navy); }
.gst-cmp thead th small { display: block; font-weight: 500; color: var(--tv2-ink-3); font-size: .7rem; }
.gst-cmp tbody th { font-weight: 600; color: var(--tv2-ink-2); background: #fafbfc; width: 22%; min-width: 130px; }
.gst-cmp .num, .gst-cmp th.num { text-align: right; }
.gst-detail .gst-cmp .num, .gst-detail .gst-cmp th.num { text-align: left; }
.gst-detail .gst-cmp td.num:last-child, .gst-detail .gst-cmp th.num:last-child { text-align: right; }
.nb { white-space: nowrap; }
.gst-cmp tr:last-child th, .gst-cmp tr:last-child td { border-bottom: none; }
.gst-cmp tr.neq th, .gst-cmp tr.neq td { background: var(--tv2-warn-bg); }
.gst-cmp tr.neq td.num { color: var(--tv2-bad); font-weight: 700; }
.gst-why h6, .gst-do h6 { margin: 0 0 6px; font: 700 .82rem var(--font-body); color: var(--tv2-navy); }
.gst-why ul { margin: 0; padding: 0; list-style: none; display: grid; gap: 5px; }
.gst-why li { position: relative; padding-left: 18px; font-size: .84rem; line-height: 1.55; color: var(--tv2-ink-2); }
.gst-why li::before { content: ''; position: absolute; left: 3px; top: .55em; width: 8px; height: 8px; border-radius: 50%; background: var(--tv2-info); }
.gst-why li.lv-bad::before { background: var(--tv2-bad); } .gst-why li.lv-warn::before { background: #d98a00; } .gst-why li.lv-good::before { background: var(--tv2-good); }
.gst-do { background: var(--tv2-tint); border-left: 4px solid var(--tv2-gold); border-radius: 8px; padding: 10px 14px; }
.gst-do p { margin: 0 0 6px; font-size: .86rem; line-height: 1.6; color: var(--tv2-ink); } .gst-do p:last-child { margin-bottom: 0; }
.gst-do .gst-tl { color: #6a4300; }
.gst-btns { display: flex; flex-wrap: wrap; gap: 8px 10px; align-items: center; }
.gst-decided { font-size: .84rem; font-weight: 600; color: var(--tv2-good); }
.gst-pager { display: flex; align-items: center; justify-content: center; gap: 16px; margin: 18px 0 4px; font-size: .84rem; color: var(--tv2-ink-2); }

/* suppliers / customers */
.gst-sup-head, .gst-sup { display: grid; grid-template-columns: minmax(0, 2.2fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1.1fr) minmax(0, 1.1fr) minmax(130px, 1.3fr) minmax(0, 1.4fr); gap: 0 14px; align-items: center; }
.gst-sup-head { padding: 0 14px 8px; font-size: .74rem; font-weight: 700; color: var(--tv2-ink-3); border-bottom: 2px solid var(--tv2-navy); }
.gst-sups { list-style: none; margin: 0; padding: 0; }
.gst-sup { padding: 12px 14px; border-bottom: 1px solid var(--tv2-line); background: #fff; }
.gst-sup:hover { background: #f8fafc; }
.gst-sup b { display: block; font-size: .88rem; color: var(--tv2-ink); overflow-wrap: anywhere; }
.gst-sup small { display: block; font-size: .74rem; color: var(--tv2-ink-3); overflow-wrap: anywhere; }
.gst-sup .c-n { font-variant-numeric: tabular-nums; } .gst-sup .c-n.neg b { color: var(--tv2-bad); }
.gst-sup .c-st small.fl { margin-top: 5px; font-weight: 600; } .gst-sup .fl.bad { color: var(--tv2-bad); } .gst-sup .fl.warn { color: var(--tv2-warn); } .gst-sup .fl.good { color: var(--tv2-good); }
.gst-sup .c-act { display: flex; flex-wrap: wrap; gap: 6px; justify-content: flex-end; }

/* follow-up messages */
.gst-fus { display: grid; gap: 14px; }
.gst-fu { border: 1px solid var(--tv2-line); border-radius: 12px; background: #fff; padding: 14px 16px; }
.gst-fu-h { display: flex; justify-content: space-between; gap: 8px 16px; flex-wrap: wrap; margin-bottom: 8px; }
.gst-fu-h b { font-size: .95rem; color: var(--tv2-navy); } .gst-fu-h small { display: block; font-size: .76rem; color: var(--tv2-ink-3); }
.gst-fu-meta { display: flex; gap: 6px 14px; flex-wrap: wrap; align-items: center; font-size: .8rem; color: var(--tv2-ink-2); }
.gst-fu-meta b { font-family: var(--tv2-num); font-size: 1rem; color: var(--tv2-navy); }
.gst-fu-sub { margin: 0 0 8px; font-size: .84rem; color: var(--tv2-ink); }
.gst-fu-sub span { display: inline-block; margin-right: 6px; font-size: .74rem; font-weight: 700; color: var(--tv2-ink-3); }
.gst-msg { margin: 0 0 10px; padding: 12px 14px; background: var(--tv2-tint); border: 1px solid var(--tv2-line); border-radius: 10px; font: 400 .84rem/1.65 var(--font-body); color: var(--tv2-ink); white-space: pre-wrap; overflow-wrap: anywhere; max-height: 280px; overflow: auto; }
.gst-msg:focus-visible { outline: 3px solid rgba(212,175,55,.6); }
.gst-fu-btns { display: flex; gap: 8px; flex-wrap: wrap; }
.gst-fu-btns a.tv2-btn { display: inline-flex; align-items: center; text-decoration: none; }

/* data issues */
.gst-chipsrow { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 14px; }
.gst-chip { font-size: .78rem; font-weight: 600; color: var(--tv2-ink-2); background: var(--tv2-line); border-radius: 999px; padding: 5px 11px; } .gst-chip b { color: var(--tv2-navy); margin-left: 3px; }
.gst-iss { list-style: none; margin: 0; padding: 0; }
.gst-is { display: grid; grid-template-columns: 190px minmax(0, 1.2fr) minmax(0, 2fr); gap: 6px 16px; align-items: start; padding: 11px 4px; border-bottom: 1px solid var(--tv2-line); }
.gst-is b { display: block; font-size: .86rem; color: var(--tv2-ink); overflow-wrap: anywhere; } .gst-is small { display: block; font-size: .74rem; color: var(--tv2-ink-3); overflow-wrap: anywhere; }
.gst-is p { margin: 0; font-size: .84rem; line-height: 1.55; color: var(--tv2-ink-2); }

/* GSTR-1 tables */
.gst-tbl .num.neg { color: var(--tv2-bad); font-weight: 700; } .gst-tbl .num.ok { color: var(--tv2-good); }
.gst-tbl tfoot th { text-align: left; background: var(--tv2-tint); }
.gst-tbl th[scope="row"] { font-weight: 600; text-align: left; white-space: nowrap; }
.gst-tbl-note { margin-top: 10px; }
#gst-panel .tool-table-container { overflow-x: auto; }

/* pair picker (inside the shared modal) */
.gst-pair { padding: 16px 18px 14px; }
.gst-pair h4 { margin: 0 34px 6px 0; font-family: var(--font-heading); font-size: 1.2rem; color: var(--tv2-navy); }
.gst-pair-me, .gst-pair-list li { display: grid; grid-template-columns: minmax(0, 1.8fr) minmax(0, 1.2fr) minmax(0, 1fr) minmax(0, .9fr) auto; gap: 4px 14px; align-items: center; }
.gst-pair-me { background: var(--tv2-tint); border-left: 4px solid var(--tv2-gold); border-radius: 8px; padding: 10px 14px; margin: 0 0 12px; grid-template-columns: minmax(0, 1.8fr) minmax(0, 1.2fr) minmax(0, 1fr); }
.gst-pair b { display: block; font-size: .86rem; color: var(--tv2-ink); overflow-wrap: anywhere; } .gst-pair small { display: block; font-size: .74rem; color: var(--tv2-ink-3); }
.gst-pair .gst-search { margin-bottom: 8px; }
.gst-pair-list { list-style: none; margin: 0; padding: 0; max-height: 46vh; overflow: auto; border: 1px solid var(--tv2-line); border-radius: 10px; }
.gst-pair-list li { padding: 9px 12px; border-bottom: 1px solid var(--tv2-line); }
.gst-pair-list li:last-child { border-bottom: none; }
.gst-pair-list li.gst-empty { display: block; border: none; border-radius: 0; }
.gst-pair .p-amt { font-variant-numeric: tabular-nums; } .gst-pair .p-diff { font-size: .78rem; color: var(--tv2-ink-3); font-variant-numeric: tabular-nums; } .gst-pair .p-diff.ok { color: var(--tv2-good); font-weight: 700; }

/* toast */
.gst-toast {
    position: fixed; left: 50%; bottom: 22px; z-index: 30000; transform: translate(-50%, 16px); opacity: 0; pointer-events: none;
    display: flex; align-items: center; gap: 14px; max-width: min(92vw, 540px); background: var(--tv2-navy-d); color: #fff;
    font-size: .88rem; line-height: 1.45; padding: 11px 16px; border-radius: 12px; box-shadow: 0 12px 34px rgba(0,0,0,.3);
    transition: opacity .18s, transform .18s;
}
.gst-toast.on { opacity: 1; transform: translate(-50%, 0); pointer-events: auto; }
.gst-toast button { flex: none; background: transparent; border: none; color: var(--tv2-gold); font-weight: 800; font-size: .88rem; cursor: pointer; padding: 4px 6px; border-radius: 6px; }
.gst-toast button:hover { background: rgba(255,255,255,.1); }

/* --------------------------------------------------------------- GSTR-3B view */
.gst-have { list-style: none; margin: 0 0 10px; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(170px, 100%), 1fr)); gap: 10px; }
.gst-have li { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; padding: 10px 14px; border: 1px solid var(--tv2-line); border-radius: 10px; background: #fff; font-weight: 700; font-size: .88rem; color: var(--tv2-navy); }
.gst-have li span { width: 22px; height: 22px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: .78rem; background: var(--tv2-line); color: var(--tv2-ink-3); }
.gst-have li small { width: 100%; padding-left: 31px; margin-top: -4px; font-weight: 500; font-size: .74rem; color: var(--tv2-ink-3); }
.gst-have li.yes { border-color: var(--tv2-good-line); background: var(--tv2-good-bg); } .gst-have li.yes span { background: var(--tv2-good); color: #fff; }
.gst-have li.no { color: var(--tv2-ink-3); background: var(--tv2-tint); }
.gst-cp.c-half { grid-column: auto; }
.gst-line-head, .gst-line > summary { display: grid; grid-template-columns: 84px minmax(0, 2.4fr) minmax(0, 1fr) minmax(0, 1.1fr) minmax(0, 1.1fr) 104px; gap: 0 14px; align-items: center; }
.gst-line-head { padding: 0 14px 8px 18px; font-size: .74rem; font-weight: 700; color: var(--tv2-ink-3); border-bottom: 2px solid var(--tv2-navy); }
.gst-line-head span:nth-child(n+3):nth-child(-n+5) { text-align: right; }
.gst-line-group { margin: 20px 0 6px; padding: 0 4px; font: 700 .86rem var(--font-body); color: var(--tv2-navy); }
.gst-line { border-bottom: 1px solid var(--tv2-line); border-left: 4px solid #2a9d8f; background: #fff; }
.gst-line.flag { border-left-color: #c8553d; }
.gst-line > summary { list-style: none; cursor: pointer; padding: 12px 14px; }
.gst-line > summary::-webkit-details-marker { display: none; }
.gst-line > summary:hover { background: #f6f9fc; }
.gst-line > summary:focus-visible { outline: 3px solid rgba(212,175,55,.65); outline-offset: -3px; }
.gst-line[open] > summary { background: #f4f8fc; }
.gst-line .c-ref b { color: var(--tv2-navy); font-size: .86rem; }
.gst-line .c-title { font-size: .86rem; line-height: 1.45; color: var(--tv2-ink); }
.gst-line .c-side { text-align: right; font-variant-numeric: tabular-nums; }
.gst-line .c-side b { display: block; font-size: .88rem; font-weight: 600; color: var(--tv2-ink); }
.gst-line .c-side small { display: block; font-size: .72rem; color: var(--tv2-ink-3); }
.gst-line .c-side small.neg { color: var(--tv2-bad); font-weight: 700; } .gst-line .c-side small.ok { color: var(--tv2-good); }
.gst-line-body { padding: 4px 16px 16px 18px; border-top: 1px dashed var(--tv2-line); background: #fff; }
.gst-line-body .tool-table-container { overflow-x: auto; margin-top: 10px; }
.gst-3b-tbl tr.diff th, .gst-3b-tbl tr.diff td { background: #f7f9fb; font-weight: 600; }
.gst-3b-tbl tr.diff.neq th, .gst-3b-tbl tr.diff.neq td { background: var(--tv2-warn-bg); }
.gst-3b-tbl td.neg { color: var(--tv2-bad); font-weight: 800; }

/* ------------------------------------------------ the one-time form before a download */
#gst-gate-body { padding: 14px 16px 10px; }
#gst-gate-body .tool-card { margin: 0; padding: 14px 14px 10px; border: none; }
.tv2-modal-back .lead-gate-sub { max-width: 62ch; }

/* ------------------------------------------------------------------ narrow screens */
@media (max-width: 1060px) {
    .gst-list-head { display: none; }
    .gst-doc-sum {
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); grid-template-areas: "party party" "doc st" "books portal" "res res"; gap: 8px 14px; padding: 13px 40px 13px 14px; align-items: start;
    }
    .gst-doc-sum .c-party { grid-area: party; } .gst-doc-sum .c-doc { grid-area: doc; } .gst-doc-sum .c-st { grid-area: st; justify-self: end; text-align: right; }
    .gst-doc-sum .c-books { grid-area: books; text-align: left; } .gst-doc-sum .c-portal { grid-area: portal; text-align: left; } .gst-doc-sum .c-res { grid-area: res; }
    .gst-doc-sum .c-books::before, .gst-doc-sum .c-portal::before { content: attr(data-l); display: block; font-size: .7rem; font-weight: 700; color: var(--tv2-ink-3); margin-bottom: 1px; }
    .gst-doc-sum .c-chev { position: absolute; right: 16px; top: 18px; }
    .gst-doc-sum .c-st .tv2-pill { white-space: normal; text-align: left; }
    .gst-doc-sum .c-res { padding-top: 7px; border-top: 1px dashed var(--tv2-line); }

    .gst-sup-head { display: none; }
    .gst-sup { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 14px; padding: 14px; }
    .gst-sup .c-party, .gst-sup .c-st, .gst-sup .c-act { grid-column: 1 / -1; }
    .gst-sup .c-act { justify-content: flex-start; }
    .gst-sup .c-n::before { content: attr(data-l); display: block; font-size: .7rem; font-weight: 700; color: var(--tv2-ink-3); margin-bottom: 1px; }

    .gst-line-head { display: none; }
    .gst-line > summary { grid-template-columns: 68px minmax(0, 1fr); grid-template-areas: "ref title" "b3 b3" "ret ret" "bk bk" "st st"; gap: 8px 12px; align-items: start; }
    .gst-line .c-ref { grid-area: ref; } .gst-line .c-title { grid-area: title; } .gst-line .c-st { grid-area: st; }
    .gst-line .c-b3 { grid-area: b3; } .gst-line .c-ret { grid-area: ret; } .gst-line .c-bk { grid-area: bk; }
    .gst-line .c-side { display: grid; grid-template-columns: 112px minmax(0, 1fr); gap: 0 10px; align-items: baseline; text-align: left; padding-top: 6px; border-top: 1px dashed var(--tv2-line); }
    .gst-line .c-side::before { content: attr(data-l); grid-row: 1 / span 2; font-size: .74rem; font-weight: 700; color: var(--tv2-ink-3); }
    .gst-line .c-side > b, .gst-line .c-side > .nil { grid-column: 2; } .gst-line .c-side > small { grid-column: 2; }
    .gst-line .c-side .lbl { display: none; }
    .gst-line.na .c-ret, .gst-line.na .c-bk { display: none; }   /* nothing to show on a line that was not compared */

    .gst-is { grid-template-columns: 1fr; }
    .gst-pair-me, .gst-pair-list li { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
    .gst-pair-list li > button { grid-column: 1 / -1; justify-self: start; }
}
@media (max-width: 860px) {
    .gst-charts { grid-template-columns: 1fr; }
    .gst-cp.c-wide, .gst-cp.c-half { grid-column: auto; }
}
@media (max-width: 640px) {
    .gst-tabs { display: none; }
    .gst-tabsel { display: block; }
}
@media (max-width: 560px) {
    .gst-have { grid-template-columns: 1fr 1fr; gap: 8px; }
    .gst-have li { padding: 9px 11px; gap: 7px; font-size: .84rem; }
    .gst-have li small { padding-left: 29px; }
    .gst-res-head h3 { font-size: 1.3rem; }
    .gst-dl { width: 100%; } .gst-dl > * { flex: 1 1 160px; }
    .gst-mode.on { padding-left: 18px; }
    .gst-zone-card { padding: 14px 13px 12px; }
    .gst-doc-detail { padding: 6px 12px 16px 14px; }
    .gst-cmp th, .gst-cmp td { padding: 6px 8px; }
    .gst-cmp tbody th { min-width: 108px; }
    .gst-ins { padding: 13px 13px 14px; }
    .gst-run { width: 100%; }
    .gst-actions .btn-tool-outline { flex: 1 1 100%; }
    .gst-toast { bottom: 14px; }
    .gst-pager { gap: 10px; }
}
@media (prefers-reduced-motion: reduce) {
    .gst-spin { animation: none; border-top-color: var(--tv2-gold); }
    .gst-kpi:hover { transform: none; }
}
@media print {
    .gst-busy, .gst-toast { display: none !important; }
}
