:root{--bg0: #eef3f8;--bg1: #ffffff;--bg2: #f7fafc;--line: #d5dee8;--text: #1c2a3a;--muted: #5f7083;--accent: #1a6fb5;--accent-soft: #e6f1fa;--accent-dim: #125890;--warn: #b7791f;--danger: #c53030;--mono: "IBM Plex Mono", ui-monospace, monospace;--sans: "IBM Plex Sans", "Segoe UI", sans-serif;--shadow: 0 1px 2px rgba(28, 42, 58, .04), 0 8px 24px rgba(28, 42, 58, .05);--brand-border: #b9d4ea;--surface-head: #f0f6fb;--surface-head-alt: #eef4f9;--body-glow-1: #dceaf6;--body-glow-2: #e8eef5;--body-base: #f5f8fb;--chip-off: #9aa8b6;--tone-up: #0f7a4a;--tone-down: #c53030;--bid: #e67e22;--ofr: #2563eb;--chg-up: #16a34a;--chg-down: #dc2626;--row-tint: rgba(26, 111, 181, .03);--row-tint-hi: rgba(26, 111, 181, .06);--row-tint-hi2: rgba(26, 111, 181, .09);--tkn-buy-bg: #fde8e8;--tkn-sell-bg: #e8f6ec;--topbar-glass: rgba(255, 255, 255, .94);--rp-col-line: #d5e0ec;--rp-head-line: #b9cdda;--rp-title: #152536;color-scheme:light}html[data-theme=dark]{--bg0: rgb(26, 43, 61);--bg1: #22364c;--bg2: #2a4058;--line: #3d556e;--text: #e6eef6;--muted: #9db0c3;--accent: #6cb0e0;--accent-soft: rgba(108, 176, 224, .16);--accent-dim: #8fc4ea;--warn: #e0b35a;--danger: #f07178;--shadow: 0 1px 2px rgba(0, 0, 0, .28), 0 10px 28px rgba(0, 0, 0, .32);--brand-border: #3d6a8f;--surface-head: #1e3348;--surface-head-alt: #1e3348;--body-glow-1: rgba(70, 120, 165, .28);--body-glow-2: rgba(45, 80, 115, .22);--body-base: rgb(26, 43, 61);--chip-off: #7a8fa3;--tone-up: #3dd68c;--tone-down: #f07178;--bid: #f0a35a;--ofr: #7eb6ff;--chg-up: #3dd68c;--chg-down: #f07178;--row-tint: rgba(108, 176, 224, .04);--row-tint-hi: rgba(108, 176, 224, .08);--row-tint-hi2: rgba(108, 176, 224, .12);--tkn-buy-bg: rgba(240, 113, 120, .18);--tkn-sell-bg: rgba(61, 214, 140, .16);--topbar-glass: rgba(34, 54, 76, .92);--rp-col-line: #3d556e;--rp-head-line: #4a6782;--rp-title: #e6eef6;color-scheme:dark}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{font-family:var(--sans);background:radial-gradient(900px 420px at 0% 0%,var(--body-glow-1) 0%,transparent 55%),radial-gradient(800px 380px at 100% 0%,var(--body-glow-2) 0%,transparent 50%),linear-gradient(180deg,var(--body-base) 0%,var(--bg0) 100%);color:var(--text)}.app{width:100%;max-width:none;margin:0;padding:12px 16px 28px;box-sizing:border-box}.topbar{display:flex;flex-wrap:wrap;gap:16px;align-items:center;justify-content:space-between;padding:14px 16px;border:1px solid var(--line);background:var(--bg1);box-shadow:var(--shadow)}.brand{display:flex;gap:12px;align-items:center;text-decoration:none;color:inherit;cursor:pointer}a.brand:hover h1{color:var(--accent)}.brand__mark{font-family:var(--mono);font-weight:600;font-size:13px;letter-spacing:.08em;padding:8px 10px;border:1px solid var(--brand-border);color:var(--accent);background:var(--accent-soft)}.brand h1{margin:0;font-size:20px;font-weight:600;letter-spacing:.02em}.brand p{margin:2px 0 0;color:var(--muted);font-size:12px}.topbar__right{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.clock{display:flex;flex-direction:column;align-items:flex-end;font-size:12px;color:var(--muted)}.clock strong{font-family:var(--mono);font-size:15px;color:var(--text);font-weight:500}.sources{display:flex;gap:6px}.sources span{font-size:11px;padding:4px 8px;border:1px solid var(--line);color:var(--muted);background:var(--bg2)}.sources .on{color:var(--accent);border-color:var(--brand-border);background:var(--accent-soft)}.sources .off{color:var(--chip-off)}.btn-refresh,.btn-skill{font-family:var(--sans);font-size:13px;font-weight:600;padding:10px 16px;border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer}.btn-refresh:disabled,.btn-skill:disabled{opacity:.55;cursor:wait}.btn-refresh:hover:not(:disabled),.btn-skill:hover:not(:disabled){background:var(--accent-dim);border-color:var(--accent-dim)}.btn-nav{font-family:var(--sans);font-size:13px;font-weight:600;padding:10px 14px;border:1px solid var(--brand-border);background:var(--accent-soft);color:var(--accent);text-decoration:none;display:inline-flex;align-items:center}.btn-nav:hover{border-color:var(--accent)}.btn-nav.is-active{background:var(--accent);border-color:var(--accent);color:#fff}.btn-theme{display:inline-flex;align-items:center;gap:7px;margin-left:2px;margin-right:4px;padding:5px 11px 5px 7px;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--muted);font-family:var(--sans);font-size:11.5px;font-weight:500;letter-spacing:.04em;line-height:1;cursor:pointer;transition:color .15s ease,border-color .15s ease,background .15s ease,transform .12s ease}.btn-theme__dot{width:14px;height:14px;border-radius:50%;border:1px solid var(--line);background:linear-gradient(135deg,var(--bg1) 48%,var(--text) 52%);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--bg0) 35%,transparent);flex:0 0 auto}.btn-theme__label{white-space:nowrap}.btn-theme:hover{color:var(--text);border-color:color-mix(in srgb,var(--accent) 45%,var(--line));background:color-mix(in srgb,var(--accent-soft) 55%,transparent)}.btn-theme:active{transform:scale(.96)}.btn-theme:focus-visible{outline:2px solid color-mix(in srgb,var(--accent) 55%,transparent);outline-offset:2px}.btn-theme.is-dark{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 50%,var(--line));background:var(--accent-soft)}.btn-theme.is-dark .btn-theme__dot{border-color:color-mix(in srgb,var(--accent) 40%,var(--line));background:linear-gradient(135deg,var(--text) 48%,var(--bg1) 52%)}.top-nav{display:inline-flex;flex-wrap:wrap;gap:6px;align-items:center;padding-left:10px;margin-left:2px;border-left:1px solid var(--line)}.btn-more-reports{font-size:12px;font-weight:600;color:var(--accent);text-decoration:none;padding:4px 8px;border:1px solid var(--brand-border);border-radius:6px;background:var(--accent-soft);white-space:nowrap}.btn-more-reports:hover{border-color:var(--accent)}.panel__actions{display:flex;align-items:center;gap:8px;margin-left:auto}.btn-ghost{font-family:var(--sans);font-size:13px;padding:10px 14px;border:1px solid var(--line);background:var(--bg1);color:var(--muted);cursor:pointer}.btn-ghost:hover{color:var(--text);border-color:var(--brand-border)}.btn-push-page{font-family:var(--sans);font-size:13px;font-weight:600;padding:10px 14px;border:1px solid var(--line);background:var(--bg1);color:var(--accent-dim);text-decoration:none;display:inline-flex;align-items:center}.btn-push-page:hover{background:var(--accent-soft);border-color:var(--accent)}.btn-skill--ghost{background:var(--bg1);color:var(--accent)}.btn-skill--ghost:hover:not(:disabled){background:var(--accent-soft);color:var(--accent-dim)}.status-line{display:flex;flex-wrap:wrap;gap:12px;margin:10px 2px 18px;font-size:12px;color:var(--muted);font-family:var(--mono)}.status-line .err{color:var(--danger)}.status-line .warn{color:var(--warn)}.status-line .warn-details{max-width:100%}.status-line .warn-details summary{cursor:pointer;color:var(--warn)}.status-line .warn-list{margin:6px 0 0;padding-left:1.2rem;color:var(--warn);white-space:pre-wrap;word-break:break-word}.main{display:flex;flex-direction:column;gap:18px}.panel{border:1px solid var(--line);background:var(--bg1);box-shadow:var(--shadow);padding:14px 14px 16px}.panel__head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 12px;border-bottom:1px solid var(--line);padding-bottom:8px}.panel--collapsed .panel__head{margin-bottom:0;border-bottom:none;padding-bottom:0}.panel__head h2{margin:0;font-size:15px;font-weight:600;letter-spacing:.04em;color:var(--text)}.panel>h2{margin:0 0 12px;font-size:15px;font-weight:600;letter-spacing:.04em;color:var(--text);border-bottom:1px solid var(--line);padding-bottom:8px}.btn-collapse,.btn-collapse:hover{display:none}.btn-back-top{position:fixed;right:20px;bottom:20px;z-index:50;width:42px;height:42px;border:1px solid var(--line);border-radius:50%;background:var(--bg1);color:var(--accent-dim);box-shadow:var(--shadow);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0}.btn-back-top:hover{background:var(--accent-soft);border-color:var(--accent)}.panel__body[hidden]{display:none}.empty{color:var(--muted);font-size:13px}.news-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px}.news-list li{border:1px solid var(--line);background:var(--bg2);padding:10px 12px}.news-meta{display:flex;justify-content:space-between;gap:8px;margin-bottom:6px;font-size:11px;color:var(--muted);font-family:var(--mono)}.src{padding:1px 6px;border:1px solid var(--line)}.src--ths{color:var(--accent);border-color:var(--brand-border);background:var(--accent-soft)}.src--qb{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 40%,var(--line));background:color-mix(in srgb,var(--warn) 12%,var(--bg1))}.news-list a.news-title{display:block;font-size:13px;font-weight:600;line-height:1.4;color:var(--text);text-decoration:none}.news-list a.news-title:hover{color:var(--accent);text-decoration:underline}.news-list strong.news-title{display:block;font-size:13px;font-weight:600;line-height:1.4}.news-list p{margin:6px 0 0;font-size:12px;color:var(--muted);line-height:1.45;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.board--merged{border:1px solid var(--line);background:var(--bg1)}.board-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.board-table{width:100%;min-width:960px;border-collapse:collapse;font-size:12px}.board-table th,.board-table td{border-top:1px solid var(--line);border-left:1px solid var(--line);padding:3px 6px;text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--text);white-space:nowrap}.board-table th:first-child,.board-table td:first-child,.board-table__field{text-align:left;color:var(--muted);font-family:var(--sans);position:sticky;left:0;z-index:2;background:var(--bg1);min-width:7.5rem;border-left:none}.board-table thead th{border-top:none;background:var(--surface-head);color:var(--text);font-family:var(--sans);font-weight:600;font-size:11px;text-align:center;vertical-align:middle}.board-table thead th.board-table__field{text-align:left;z-index:3;background:var(--surface-head)}.board-table__tenor{font-size:12px;letter-spacing:.02em;border-bottom:1px solid var(--line)}.board-table__role{font-weight:500;color:var(--muted)}.board-table__role--hi{color:var(--text);font-weight:700}.board-table tbody tr:nth-child(odd) td{background:var(--row-tint)}.board-table tbody tr:nth-child(odd) td.board-table__field{background:var(--bg2)}.board-table td.board-table__cell--hi{background:var(--row-tint-hi)}.board-table tbody tr:nth-child(odd) td.board-table__cell--hi{background:var(--row-tint-hi2)}.board-table td.is-bid{color:var(--bid);font-weight:600}.board-table td.is-ofr{color:var(--ofr);font-weight:600}.board-table td.is-up{color:var(--chg-up);font-weight:600}.board-table td.is-down{color:var(--chg-down);font-weight:600}.board-table__row--muted td,.board-table td.is-valuation{font-size:11px;color:var(--muted);font-weight:500}.board-table__row--muted td.board-table__field{color:var(--muted)}.board-table tbody tr:has(td.is-chg) td:not(.board-table__field),.board-table tbody tr td.is-chg{font-size:12.5px;font-weight:650}.board-table td.is-tkn-gvn-buy,.spread-table td.is-tkn-gvn-buy,.quote-pair-table td.is-tkn-gvn-buy,.quote-row dd.is-tkn-gvn-buy{background:var(--tkn-buy-bg)!important}.board-table td.is-tkn-gvn-sell,.spread-table td.is-tkn-gvn-sell,.quote-pair-table td.is-tkn-gvn-sell,.quote-row dd.is-tkn-gvn-sell{background:var(--tkn-sell-bg)!important}.spread-merged{border:1px solid var(--line);background:var(--bg1)}.spread-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.spread-board-table{width:100%;min-width:1100px;border-collapse:collapse;font-size:11.5px}.spread-board-table th,.spread-board-table td{border-top:1px solid var(--line);border-left:1px solid var(--line);padding:3px 5px;text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--text);white-space:nowrap}.spread-board-table th:first-child,.spread-board-table td:first-child,.spread-board-table__field{text-align:left;color:var(--muted);font-family:var(--sans);position:sticky;left:0;z-index:2;background:var(--bg1);min-width:8.5rem;border-left:none}.spread-board-table thead th{border-top:none;background:var(--surface-head-alt);color:var(--text);font-family:var(--sans);font-weight:600;font-size:11px;text-align:center;vertical-align:middle}.spread-board-table thead th.spread-board-table__field{text-align:left;z-index:3;background:var(--surface-head-alt)}.spread-board-table__group{font-size:11.5px;letter-spacing:.01em;border-bottom:1px solid var(--line)}.spread-board-table__leg{font-weight:500;color:var(--muted);font-size:10.5px}.spread-board-table__span{text-align:center!important;font-weight:600}.spread-board-table tbody tr:nth-child(odd) td{background:var(--row-tint)}.spread-board-table tbody tr:nth-child(odd) td.spread-board-table__field{background:var(--bg2)}.spread-board-table td.is-bid{color:var(--bid);font-weight:600}.spread-board-table td.is-ofr{color:var(--ofr);font-weight:600}.spread-board-table td.is-up{color:var(--chg-up);font-weight:600}.spread-board-table td.is-down{color:var(--chg-down);font-weight:600}.spread-board-table__meta--muted td,.spread-board-table td.is-valuation{font-size:11px;color:var(--muted);font-weight:500}.spread-board-table td.is-tkn-gvn-buy{background:var(--tkn-buy-bg)!important}.spread-board-table td.is-tkn-gvn-sell{background:var(--tkn-sell-bg)!important}.spread-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.spread-card{border:1px solid var(--line);background:var(--bg2);padding:10px;min-width:0}.spread-card>header h3{margin:0 0 8px;font-size:13px;line-height:1.35}.spread-table{width:100%;border-collapse:collapse;font-size:11.5px}.spread-table th,.spread-table td{border-top:1px solid var(--line);padding:3px 6px;text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--text)}.spread-table th:first-child,.spread-table td:first-child{text-align:left;color:var(--muted);font-family:var(--sans);width:38%}.spread-table thead th{border-top:none;background:var(--surface-head-alt);color:var(--text);font-family:var(--sans);font-weight:600;font-size:11px}.spread-table td.is-emph{color:var(--accent);font-weight:600}.spread-table td.is-bid{color:var(--bid);font-weight:600}.spread-table td.is-ofr{color:var(--ofr);font-weight:600}.spread-table td.is-up{color:var(--chg-up);font-weight:600}.spread-table td.is-down{color:var(--chg-down);font-weight:600}.spread-table .spread-meta-row td[colspan]{text-align:center;font-weight:600}.spread-table tbody tr:nth-child(odd){background:var(--row-tint)}.review-toolbar{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:12px}.review-err{color:var(--danger);font-size:12px;margin:0 0 8px}.review-meta h3{margin:0 0 4px;font-size:14px}.review-meta p{margin:0 0 10px;font-size:12px;color:var(--muted);font-family:var(--mono)}.review-output{border:1px solid var(--line);background:var(--bg2);padding:12px 14px;min-height:160px}.review-output--morning{padding-bottom:8px}.morning-iframe{display:block;width:100%;min-height:560px;height:min(70vh,820px);border:1px solid var(--line);background:var(--bg1);border-radius:2px}.morning-text{margin:0;max-height:min(70vh,820px);overflow:auto;white-space:pre-wrap;word-break:break-word;font-family:var(--sans);font-size:12.5px;line-height:1.55;color:var(--text);background:var(--bg1);border:1px solid var(--line);padding:12px 14px}.review-meta h3{font-size:15px;font-weight:600}.review-meta p{font-size:12px}.review-output h3{margin:0 0 10px;font-size:14px}.review-output pre{margin:0;white-space:pre-wrap;word-break:break-word;font-family:var(--sans);font-size:13px;line-height:1.65;color:var(--text)}.review-placeholder{color:var(--muted);font-size:13px;margin:0}.errors{margin-top:16px;font-size:12px;color:var(--muted)}.errors ul{margin:8px 0 0;padding-left:18px}@media(max-width:1100px){.spread-grid{grid-template-columns:1fr}}.top-grid{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(220px,.48fr);gap:12px;align-items:stretch}.top-grid--triple{grid-template-columns:repeat(3,minmax(0,1fr))}@media(max-width:1100px){.top-grid,.top-grid--triple{grid-template-columns:1fr}}.top-grid .panel{height:100%;min-height:100%;display:flex;flex-direction:column}.top-grid .panel__body{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}.top-grid .panel__body>*{flex:1 1 auto;min-height:0}.market-overview{display:flex;flex-direction:column;gap:10px;justify-content:flex-start}.market-watch__block--rates{flex:0 0 auto}.market-watch__block--indices{flex:0 0 auto;padding-top:8px;border-top:1px dashed var(--line)}.market-watch__block--funding{flex:0 0 auto;padding-top:6px;border-top:1px dashed var(--line)}.market-overview .market-watch__block--funding .funding-board{font-size:11px}.market-overview .market-watch__block--funding .funding-cell__code{font-size:9.5px}.market-overview .market-watch__block--funding .funding-cell__val{font-size:11.5px;font-weight:600}.market-overview .market-watch__block--funding .funding-cell__chg{font-size:10px}.market-overview .market-watch__block--funding .funding-sentiment__meta{font-size:9.5px}.equity-index-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px 0}.equity-index-cell{min-width:0;padding:2px 8px 2px 0}.equity-index-cell:not(:nth-child(3n)){border-right:1px solid var(--line);padding-right:8px;margin-right:8px}.equity-index-cell__label{display:block;font-size:10px;color:var(--muted);margin-bottom:1px;letter-spacing:.02em}.equity-index-cell__last{display:block;font-family:var(--mono);font-size:12.5px;font-weight:650;line-height:1.2;color:var(--text)}.equity-index-cell__chg{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px;margin-top:1px;font-family:var(--mono);font-size:10px;font-weight:600;color:var(--muted)}.equity-index-cell__chg em{font-style:normal;font-weight:500;opacity:.9}.equity-index-cell__last.is-up,.equity-index-cell__chg.is-up{color:var(--tone-up)}.equity-index-cell__last.is-down,.equity-index-cell__chg.is-down{color:var(--tone-down)}.market-watch{display:grid;grid-template-columns:minmax(170px,.55fr) minmax(0,1.55fr);grid-template-rows:auto auto;gap:10px 16px;align-items:start}.market-watch__block{display:flex;flex-direction:column;gap:6px;min-width:0}.market-watch__block+.market-watch__block{padding-top:0;border-top:none}.market-watch__block--rates,.market-watch__block--funding{padding-right:4px}.market-watch__block--primary,.market-watch__block--futures{border-left:1px solid var(--line);padding-left:14px}.market-watch__subhead{font-size:11px;font-weight:600;color:var(--muted);letter-spacing:.04em;text-transform:none}.key-rate-card__name{font-size:11.5px;font-weight:600;color:var(--text);margin-bottom:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.key-rate-card__code{font-family:var(--mono);font-size:10.5px;color:var(--muted);margin-bottom:4px}.mini-board{font-size:12px}.funding-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px 0}.funding-cell,.funding-sentiment{border:none;background:transparent;padding:2px 8px 2px 0;border-radius:0}.funding-cell:not(:nth-child(3n)){border-right:1px solid var(--line);padding-right:8px;margin-right:8px}.funding-cell__code{display:block;font-size:10.5px;color:var(--muted);margin-bottom:1px}.funding-cell__val{font-family:var(--mono);font-size:13.5px;font-weight:600;color:var(--text)}.funding-cell__row{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}.funding-cell__chg{font-family:var(--mono);font-size:11px;font-weight:600;color:var(--muted)}.funding-cell__val.is-up,.funding-cell__chg.is-up{color:var(--tone-up)}.funding-cell__val.is-down,.funding-cell__chg.is-down{color:var(--tone-down)}.funding-sentiment{margin-top:6px;padding-top:6px;border-top:1px dashed var(--line);display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px}.funding-sentiment .funding-cell__code{display:inline;margin-bottom:0}.funding-sentiment__meta{display:inline;margin-top:0;font-size:10.5px;color:var(--muted)}.funding-sentiment__meta em{font-style:normal;margin-left:4px}.key-rates-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0}@media(max-width:1100px){.market-watch{grid-template-columns:1fr}.market-watch__block--primary,.market-watch__block--futures{border-left:none;padding-left:0;border-top:1px solid var(--line);padding-top:10px}}@media(max-width:700px){.key-rates-grid,.funding-grid,.equity-index-grid{grid-template-columns:1fr}.key-rate-card:not(:last-child),.funding-cell:not(:nth-child(3n)),.equity-index-cell:not(:nth-child(3n)){border-right:none;padding-right:0;margin-right:0;border-bottom:1px solid var(--line);padding-bottom:8px;margin-bottom:4px}}.key-rate-card{border:none;background:transparent;padding:2px 10px 2px 0;border-radius:0}.key-rate-card:not(:last-child){border-right:1px solid var(--line);margin-right:10px}.key-rate-card__label{font-size:10.5px;color:var(--muted);margin-bottom:2px}.key-rate-card__yield{font-family:var(--mono);font-size:20px;font-weight:700;line-height:1.1;color:var(--text);letter-spacing:-.02em}.key-rate-card__chg{margin-top:3px;font-family:var(--mono);font-size:11px;color:var(--muted)}.key-rate-card__num{margin-top:4px;font-size:10.5px;color:var(--muted)}.key-rate-card__yield.is-up,.key-rate-card__chg.is-up{color:var(--tone-up)}.key-rate-card__yield.is-down,.key-rate-card__chg.is-down{color:var(--tone-down)}.watch-empty{margin:0;font-size:12px;color:var(--muted)}.watch-table-wrap{overflow-x:auto;overflow-y:visible;max-height:none;-webkit-overflow-scrolling:touch}.watch-table{width:100%;border-collapse:collapse;font-size:11px}.watch-table th,.watch-table td{padding:4px 6px 4px 0;text-align:left;vertical-align:top;border-bottom:1px solid var(--line);white-space:nowrap}.watch-table th{color:var(--muted);font-weight:600;position:sticky;top:0;background:var(--bg0, #fff);z-index:1}.watch-table td.is-mono,.watch-table .is-mono{font-family:var(--mono)}.watch-table__result{white-space:normal;max-width:240px;line-height:1.35}.watch-table .is-up{color:var(--tone-up)}.watch-table .is-down{color:var(--tone-down)}.watch-table--primary th,.watch-table--primary td{font-size:12px;padding:7px 8px;white-space:nowrap}.watch-table--primary th{position:static}.reports-page{max-width:none}.reports-page--tri{width:100%}.reports-tri{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:stretch}.reports-col{min-height:60vh;display:flex;flex-direction:column}.reports-col .panel__body{flex:1;min-height:0;display:flex;flex-direction:column}.reports-col .reports-list{flex:1;overflow:auto}@media(max-width:1100px){.reports-tri{grid-template-columns:1fr}}.reports-page__panel{min-height:60vh}.reports-app{min-height:100vh;display:flex;flex-direction:column;background:radial-gradient(900px 320px at 0% 0%,var(--body-glow-1) 0%,transparent 55%),radial-gradient(800px 280px at 100% 0%,var(--body-glow-2) 0%,transparent 50%),linear-gradient(180deg,var(--body-base) 0%,var(--bg0) 100%);padding:0;margin:0;max-width:none;width:100%;box-sizing:border-box}.reports-app .topbar{margin:0;padding:12px 20px;border-bottom:1px solid var(--line);background:var(--topbar-glass);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:0;box-shadow:none}.reports-app .brand p{display:none}.rp-board{flex:1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));min-height:0;width:100%;gap:0}.rp-col{display:flex;flex-direction:column;min-width:0;min-height:0;padding:16px 14px 24px;border-right:1px solid var(--rp-col-line);background:transparent}.rp-col:last-child{border-right:none}.rp-col__head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:0 8px 12px;padding:4px 4px 10px;border-bottom:2px solid var(--rp-head-line)}.rp-col__head h2{margin:0;font-size:16px;font-weight:650;letter-spacing:.1em;color:var(--rp-title);padding-left:10px;border-left:3px solid var(--accent)}.rp-col__count{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.rp-col__err{margin:0 8px 10px;font-size:12px;color:var(--danger)}.rp-list{list-style:none;margin:0;padding:0;overflow:auto;flex:1}.rp-item{margin:0 0 4px;padding:10px 12px;border-bottom:none;border-radius:8px;transition:background .15s ease}.rp-item:nth-child(odd){background:color-mix(in srgb,var(--bg1) 78%,transparent)}.rp-item:nth-child(2n){background:var(--row-tint-hi)}.rp-item:hover{background:var(--row-tint-hi2)}.rp-item:last-child{margin-bottom:0}.rp-item--lead{padding:12px 12px 14px;margin-bottom:8px;background:var(--bg1)!important;border:1px solid var(--line);box-shadow:var(--shadow)}.rp-item--lead:hover{background:var(--bg1)!important;border-color:var(--brand-border)}.rp-item__title{display:inline;border:0;background:none;padding:0;margin:0;font:inherit;font-size:13.5px;font-weight:500;color:#243447;cursor:pointer;line-height:1.45;text-align:left}.rp-item__title--lead{display:block;width:100%;font-size:15px;font-weight:600;color:#122433;margin-bottom:6px;line-height:1.4}.rp-item__title:hover:not(:disabled){color:var(--accent)}.rp-item__title:disabled{color:var(--muted);cursor:default}.rp-item__meta{display:flex;align-items:center;gap:12px;margin-bottom:10px;font-size:12px;color:var(--muted)}.rp-item__meta time,.rp-item__line time{font-variant-numeric:tabular-nums;color:#6b7c8f;white-space:nowrap;flex-shrink:0}.rp-item__summary{margin:0;padding:12px 14px 14px;font-size:12.5px;line-height:1.65;color:#3a4d61;background:var(--bg2);border:1px solid #e2ebf3;border-radius:8px;display:block;overflow:visible;word-break:break-word}.rp-item__line{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.rp-item__line .rp-item__title{flex:1 1 auto;min-width:0}.rp-item__dl{border:0;background:none;padding:0;font:inherit;font-size:12px;font-weight:500;color:var(--accent);cursor:pointer;white-space:nowrap;flex-shrink:0}.rp-item__dl:hover:not(:disabled){text-decoration:underline}.rp-item__dl:disabled{color:#a0aec0;cursor:default}.rp-empty{padding:24px 12px;font-size:13px;color:var(--muted)}@media(max-width:900px){.rp-board{grid-template-columns:1fr}.rp-col{border-right:none;border-bottom:1px solid #d5e0ec}.rp-col:last-child{border-bottom:none}}.reports-panel--compact .reports-row__summary{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.futures-panel{display:flex;flex-direction:column;height:100%;min-height:0}.futures-panel--empty{justify-content:center;align-items:center}.watch-table-wrap--futures{flex:1 1 auto;min-height:0;overflow-x:auto;overflow-y:visible;max-height:none;-webkit-overflow-scrolling:touch}.watch-table--futures{width:100%;min-width:360px;height:auto;table-layout:auto}.watch-table--futures th,.watch-table--futures td{padding:8px 4px;font-size:12px;white-space:nowrap;overflow:visible;text-overflow:clip}.watch-table--futures th{position:static}.watch-table--futures th:nth-child(n+2),.watch-table--futures td:nth-child(n+2){text-align:right;padding-left:6px}.watch-table--futures tbody tr{height:auto}@media(max-width:1100px){.watch-table--futures{min-width:100%}.watch-table--futures th,.watch-table--futures td{font-size:12px;padding:8px 6px}}.reports-panel{display:flex;flex-direction:column;gap:6px;min-height:0;flex:1 1 auto;height:100%}.reports-panel--compact{min-height:0}.reports-panel--compact .reports-list{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;justify-content:flex-start;gap:0}.reports-toolbar{display:flex;align-items:center;gap:10px}.reports-tabs{display:flex;gap:2px;align-items:center}.reports-tab{border:none;background:transparent;color:var(--muted);font-family:var(--sans);font-size:12px;padding:2px 8px;cursor:pointer;border-radius:2px}.reports-tab.is-active{color:var(--accent-dim);font-weight:600;background:var(--accent-soft)}.reports-link{border:none;background:transparent;color:var(--accent);font-family:var(--sans);font-size:12px;padding:0 2px;cursor:pointer;white-space:nowrap}.reports-link:disabled{color:var(--muted);cursor:default}.reports-link:hover:not(:disabled){text-decoration:underline}.reports-loading{font-size:12px;color:#6b7280;white-space:nowrap}.reports-list{flex:0 1 auto;min-height:0;max-height:none;overflow:visible;padding:2px 0}.reports-row{padding:8px 0;border-bottom:1px solid var(--line)}.reports-row:last-child{border-bottom:none}.reports-row__line{display:flex;align-items:baseline;gap:12px}.reports-row__title{flex:1;min-width:0;font-size:13px;font-weight:600;color:var(--text);line-height:1.4;border:none;background:transparent;padding:0;text-align:left;font-family:inherit;cursor:pointer}.reports-row__title:hover:not(:disabled){color:var(--accent);text-decoration:underline}.reports-row__title:disabled{cursor:default;color:var(--muted)}.reports-row__time{font-family:var(--mono);font-size:11px;color:var(--muted);white-space:nowrap}.reports-row__summary{margin:6px 0 0;font-size:11px;line-height:1.45;color:var(--muted)}.reports-empty{color:var(--muted);text-align:center;padding:18px 10px;margin:0;font-size:12px}.reports-table-wrap,.reports-item,.reports-refresh{display:none}.board-table td.is-chg,.spread-board-table td.is-chg{font-size:11px}.credit-toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:12px 0;padding:12px 14px;border:1px solid var(--line);background:var(--bg1);box-shadow:var(--shadow)}.credit-day{font-size:13px;color:var(--text)}.credit-day strong{font-weight:600}.credit-day__hint{margin-left:.35rem;color:var(--muted);font-size:12px}.credit-date{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted)}.credit-date input{font:inherit;padding:8px 10px;border:1px solid var(--line);border-radius:6px}.credit-meta{font-size:12px;color:var(--muted);margin-left:auto}.credit-err,.credit-warn{margin:0 0 10px;font-size:13px}.credit-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:12px}@media(max-width:1100px){.credit-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}.credit-kpi{border:1px solid var(--line);background:var(--bg1);padding:12px 14px;box-shadow:var(--shadow)}.credit-kpi span{display:block;font-size:12px;color:var(--muted);margin-bottom:6px}.credit-kpi strong{font-family:var(--mono);font-size:20px;font-weight:600}.credit-filters{display:flex;flex-direction:column;gap:8px;margin-bottom:14px;padding:12px 14px;border:1px solid var(--line);background:var(--bg1)}.credit-filters__hint{margin:0 0 4px;font-size:12px;color:var(--muted)}.credit-filters__hint code{font-family:var(--mono);font-size:11px;color:var(--accent-dim)}.credit-filters__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 18px}@media(max-width:900px){.credit-filters__grid{grid-template-columns:1fr}}.credit-filter{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;min-width:0;padding:4px 0;border-bottom:1px dashed #e6edf4}.credit-filter.is-wide{grid-column:1 / -1}.credit-filter__label{font-size:12px;color:var(--muted);display:inline-flex;align-items:baseline;gap:6px;white-space:nowrap;flex:0 0 auto}.credit-filter__field{font-family:var(--mono);font-size:10px;color:#8a9bb0}.credit-filter__chips{display:flex;flex-wrap:wrap;gap:6px;flex:1 1 auto;min-width:0}.credit-chip{font-size:12px;padding:5px 10px;border:1px solid var(--line);background:var(--bg2);color:var(--text);cursor:pointer;border-radius:999px}.credit-chip.is-on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-dim);font-weight:600}.credit-table-wrap{overflow:auto;border:1px solid var(--line);background:var(--bg1);box-shadow:var(--shadow)}.credit-table{width:100%;border-collapse:collapse;font-size:12px;min-width:1100px}.credit-table th,.credit-table td{border-bottom:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top}.credit-table th{position:sticky;top:0;background:var(--bg2);font-weight:600;white-space:nowrap;z-index:1}.credit-table td.mono{font-family:var(--mono);font-size:11px}.credit-table td.num{font-family:var(--mono);text-align:right;white-space:nowrap}.credit-empty{text-align:center;color:var(--muted);padding:28px 10px!important}.th-sort{font:inherit;font-weight:600;border:none;background:transparent;color:inherit;cursor:pointer;padding:0}.th-sort:hover{color:var(--accent)}
