/* 매매 시그널 알림 목록 — 갤러리 행 (요약 카드 + 가로 스크롤 차트) */ /* 실시간 WS/STOMP 수신 — 목록 행(.tnl-row) 외곽 아웃라인만 형광 연두 (내부 inset 없음) */ .tnl-row.tnl-row--receiving { border-color: #69f0ae !important; box-shadow: 0 0 0 1px #69f0ae, 0 0 10px 4px #69f0ae66, 0 0 22px 8px #b9f6ca33; transition: box-shadow 0.15s ease-out, border-color 0.15s ease-out; } /* 수신 시 알림 상태 카드(좌측 요약)에는 연두 효과 미적용 */ .tnl-row.tnl-row--receiving .tnl-row-gallery-detail .tnl-hscroll-pane, .tnl-row.tnl-row--receiving .tnl-summary-card { box-shadow: none !important; background: var(--se-panel-card-bg, var(--bg2)); transition: border-color 0.15s ease-out; } .tnl-row.tnl-row--receiving .tnl-row-gallery-detail .tnl-hscroll-pane { border-color: var(--se-border, var(--border)); background: color-mix(in srgb, var(--bg) 40%, var(--bg2)); } .tnl-row.tnl-row--receiving .tnl-summary-card--buy { border-color: color-mix(in srgb, var(--accent, #3f7ef5) 35%, var(--se-border, var(--border))); } .tnl-row.tnl-row--receiving .tnl-summary-card--sell { border-color: color-mix(in srgb, #ef5350 35%, var(--se-border, var(--border))); } .tnl-row.tnl-row--receiving.tnl-row--selected .tnl-summary-card--selected { border-color: var(--accent, #7aa2f7); box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent, #7aa2f7) 35%, transparent); } .tnl-row--gallery { display: block; width: 100%; overflow: visible; box-sizing: border-box; } .tnl-row-gallery { --tnl-summary-card-width: 320px; display: flex; flex-direction: row; align-items: stretch; gap: 10px; width: 100%; height: 320px; max-height: 320px; padding: 10px; box-sizing: border-box; } /* 좌측 알림 요약 카드 — 고정 너비(모든 행 동일) · 우측은 차트 영역이 나머지 공간 사용 */ .tnl-row-gallery-detail { flex: 0 0 var(--tnl-summary-card-width); width: var(--tnl-summary-card-width); min-width: var(--tnl-summary-card-width); max-width: var(--tnl-summary-card-width); } .tnl-row-gallery-charts { flex: 1 1 0; min-width: 0; width: auto; } .tnl-row-gallery--chart-expanded .tnl-row-gallery-detail { flex: 0 0 var(--tnl-summary-card-width); width: var(--tnl-summary-card-width); min-width: var(--tnl-summary-card-width); max-width: var(--tnl-summary-card-width); } .tnl-row-gallery--chart-expanded .tnl-row-gallery-charts { flex: 1 1 0; min-width: 0; } /* 가로 스크롤 + 우측 세로 레일 버튼 */ .tnl-hscroll-pane { display: flex; flex-direction: row; align-items: stretch; min-width: 0; min-height: 0; height: 300px; max-height: 300px; border-radius: 12px; border: 1px solid var(--se-border, var(--border)); background: color-mix(in srgb, var(--bg) 40%, var(--bg2)); overflow: hidden; box-sizing: border-box; } .tnl-hscroll-pane__viewport { flex: 1 1 0; min-width: 0; height: 100%; overflow-x: auto; overflow-y: hidden; -webkit-overflow-scrolling: touch; overscroll-behavior-x: contain; scrollbar-width: thin; scrollbar-color: color-mix(in srgb, var(--text3) 35%, transparent) transparent; } .tnl-hscroll-pane__viewport::-webkit-scrollbar { height: 6px; } .tnl-hscroll-pane__viewport::-webkit-scrollbar-thumb { background: color-mix(in srgb, var(--text3) 35%, transparent); border-radius: 4px; } .tnl-hscroll-pane__content { display: flex; flex-direction: row; align-items: stretch; height: 100%; min-height: 0; box-sizing: border-box; } .tnl-row-gallery-charts .tnl-hscroll-pane__content { min-width: 100%; width: 100%; } .tnl-row-gallery-charts .tnl-hscroll-pane__viewport { overflow-x: hidden; } .tnl-hscroll-pane__rail { flex: 0 0 32px; width: 32px; display: flex; flex-direction: column; align-items: stretch; justify-content: center; gap: 8px; padding: 8px 4px; border-left: 1px solid var(--se-border, var(--border)); background: color-mix(in srgb, var(--bg3, var(--bg2)) 85%, transparent); box-sizing: border-box; } .tnl-hscroll-pane__rail-btn { flex: 1 1 0; min-height: 44px; max-height: 96px; margin: 0; padding: 0; display: inline-flex; align-items: center; justify-content: center; border: 1px solid color-mix(in srgb, var(--accent, #3f7ef5) 28%, var(--se-border, var(--border))); border-radius: 8px; background: color-mix(in srgb, var(--bg2) 90%, transparent); color: var(--accent, #3f7ef5); cursor: pointer; transition: background 0.15s, border-color 0.15s, opacity 0.15s, transform 0.1s; } .tnl-hscroll-pane__rail-btn:hover:not(:disabled) { background: color-mix(in srgb, var(--accent, #3f7ef5) 16%, var(--bg2)); border-color: var(--accent, #3f7ef5); } .tnl-hscroll-pane__rail-btn:active:not(:disabled) { transform: scale(0.96); } .tnl-hscroll-pane__rail-btn:disabled { opacity: 0.35; cursor: default; color: var(--text3); border-color: var(--se-border, var(--border)); } /* 좌측 알림 상세(매매 시그널 요약 카드) */ .tnl-row-gallery-detail .tnl-hscroll-pane__viewport { overflow-x: hidden; } .tnl-row-gallery-detail .tnl-hscroll-pane__content { min-width: 100%; width: 100%; } .tnl-row-gallery-detail .tnl-hscroll-pane { width: 100%; } .tnl-row-gallery-detail .tnl-summary-card { flex: 1 1 auto; width: 100%; min-width: 0; max-width: none; height: 100%; } /* 신호상세 — 가상매매 vtd-card 슬롯 (이퀄라이저·히트맵·신호등 최소 너비 확보) */ .tnl-signal-slot { flex: 1.35 1 300px; width: auto; min-width: min(100%, 300px); max-width: 42%; height: 280px; max-height: 280px; display: flex; flex-direction: column; min-height: 0; box-sizing: border-box; } .tnl-signal-slot .tnl-signal-summary--embedded-wrap { flex: 1; min-height: 0; height: 100%; display: flex; flex-direction: column; overflow: visible; } .tnl-signal-slot .tnl-signal-summary--embedded-wrap > .vtd-card { flex: 1; width: 100%; height: 100%; min-height: 0; max-height: 100%; align-self: stretch; overflow: visible; box-sizing: border-box; } .tnl-signal-slot .tnl-signal-summary--embedded-wrap > .vtd-card > .vtd-sig-panel-wrap--summary { flex: 0 0 auto; min-height: 0; overflow: visible; } .tnl-signal-slot .tnl-signal-summary--embedded-wrap .vtd-sig-panel--summary { flex: 0 0 auto; overflow: visible; } .tnl-signal-slot .tnl-signal-summary--embedded-wrap .vtd-sig-visual { flex: 0 0 auto; min-height: 0; overflow: visible; } /* 가상매매와 동일 vtd-sig-* (strategyEditorTheme + virtualTradingDashboard) */ .tnl-signal-slot .tnl-signal-summary--embedded-wrap > .vtd-card > .vtd-card-chart-panel { flex: 1; min-height: 0; } .tnl-signal-slot .tnl-signal-summary--embedded-wrap .vtd-card-foot-select:disabled { opacity: 1; cursor: default; color: var(--se-text); max-width: 200px; } /* 신호 상세 헤더 — 우측 현재가·등락·실시간 (아이콘/토글 버튼 없음) */ .tnl-signal-slot .vtd-card--head-inline-quote .vtd-card-head { flex-shrink: 0; padding-bottom: 2px; } .tnl-signal-slot .vtd-card-head-quote { display: flex; align-items: center; gap: 8px; flex-shrink: 0; margin-left: auto; } .tnl-signal-slot .vtd-card-head-quote .vtd-target-quote--compact { display: inline-flex; align-items: baseline; gap: 6px; margin: 0; padding: 0; flex: 0 1 auto; min-width: 0; } .tnl-signal-slot .vtd-card-head-quote .vtd-target-price { font-size: 13px; font-weight: 700; line-height: 1.2; white-space: nowrap; } .tnl-signal-slot .vtd-card-head-quote .vtd-target-change { font-size: 11px; font-weight: 600; white-space: nowrap; } .tnl-signal-slot .vtd-card-head-quote .vtd-live-badge { flex-shrink: 0; } .tnl-charts-track > .tnl-signal-slot { flex: 1.35 1 300px; min-width: min(100%, 300px); } /* 가상매매 투자대상 카드(vtd)와 동일한 3단 구성 */ .tnl-summary-card { flex: 1 1 auto; width: 100%; min-width: 0; height: 100%; max-height: 100%; align-self: stretch; display: flex; flex-direction: column; border: 1px solid color-mix(in srgb, var(--accent, #7aa2f7) 28%, var(--se-border, var(--border))); border-radius: 12px; background: var(--se-panel-card-bg, var(--bg2)); overflow: hidden; box-sizing: border-box; } .tnl-row-gallery-detail .tnl-summary-card { min-width: 0; } .tnl-summary-card--buy { border-color: color-mix(in srgb, var(--accent, #3f7ef5) 35%, var(--se-border, var(--border))); } .tnl-summary-card--sell { border-color: color-mix(in srgb, #ef5350 35%, var(--se-border, var(--border))); } .tnl-summary-panel { flex: 1; min-height: 0; width: 100%; padding: 14px 16px 12px; border: none; background: transparent; color: inherit; text-align: left; cursor: pointer; display: flex; flex-direction: column; gap: 12px; overflow: hidden; box-sizing: border-box; } .tnl-summary-panel:hover { background: color-mix(in srgb, var(--accent, #7aa2f7) 6%, transparent); } /* 1행: 종목명 */ .tnl-summary-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; flex-shrink: 0; } .tnl-summary-title { display: flex; flex-direction: row; align-items: baseline; flex-wrap: nowrap; gap: 8px; min-width: 0; flex: 1; } .tnl-summary-ko { font-size: 17px; font-weight: 700; line-height: 1.2; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .tnl-summary-sym { font-size: 12px; font-weight: 600; color: var(--text3, var(--se-text-muted)); white-space: nowrap; flex-shrink: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .tnl-summary-head-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; } .tnl-summary-dot { flex-shrink: 0; } /* 2행: 페어 · 시그널 가격 */ .tnl-summary-quote { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-shrink: 0; padding: 4px 2px; } .tnl-summary-quote-left { display: flex; align-items: center; gap: 6px; min-width: 0; flex: 1; } .tnl-summary-arrow { font-size: 11px; line-height: 1; flex-shrink: 0; } .tnl-summary-arrow--buy { color: var(--accent, #3f7ef5); } .tnl-summary-arrow--sell { color: #ef5350; } .tnl-summary-pair { font-size: 12px; font-weight: 600; color: var(--text3, var(--se-text-muted)); white-space: nowrap; } .tnl-summary-type { font-size: 12px; font-weight: 700; white-space: nowrap; } .tnl-summary-type--buy { color: var(--accent, #3f7ef5); } .tnl-summary-type--sell { color: #ef5350; } .tnl-summary-quote-right { display: flex; align-items: baseline; flex-shrink: 0; margin-left: auto; } .tnl-summary-price { font-size: 20px; font-weight: 800; font-variant-numeric: tabular-nums; white-space: nowrap; line-height: 1.1; } .tnl-summary-price--buy { color: var(--accent, #3f7ef5); } .tnl-summary-price--sell { color: #ef5350; } /* 3행+: 상세 정보 */ .tnl-summary-meta { flex: 1; min-height: 0; display: flex; flex-direction: column; gap: 10px; overflow-y: auto; overflow-x: hidden; padding-right: 2px; } .tnl-summary-info-row { display: grid; grid-template-columns: 88px minmax(0, 1fr); align-items: start; gap: 10px 14px; } .tnl-summary-info-lbl { font-size: 12px; font-weight: 600; color: var(--text3, var(--se-text-muted)); line-height: 1.4; flex-shrink: 0; } .tnl-summary-info-val { font-size: 13px; font-weight: 500; color: var(--text2); line-height: 1.45; word-break: break-word; text-align: right; } .tnl-summary-info-val--hi { font-weight: 700; color: var(--text); } /* 하단: 투자전략 (vtd-target-strategy-field) */ .tnl-summary-strategy-field { display: flex; align-items: center; gap: 12px; flex-shrink: 0; width: 100%; padding-top: 4px; border-top: 1px solid var(--border); } .tnl-summary-strategy-lbl { font-size: 12px; font-weight: 600; color: var(--text3, var(--se-text-muted)); white-space: nowrap; flex-shrink: 0; } .tnl-summary-strategy-box { flex: 1; min-width: 0; padding: 8px 12px; border-radius: 8px; border: 1px solid var(--se-border, var(--border)); background: var(--bg, var(--bg3)); color: var(--text); font-size: 13px; font-weight: 600; line-height: 1.35; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-align: left; } .tnl-summary-card-actions { display: flex; align-items: center; gap: 4px; padding: 8px 10px; border-top: 1px solid var(--border); background: var(--bg3, var(--se-center-bg)); flex-shrink: 0; } .tnl-charts-expanded-inner { display: flex; flex-direction: column; flex: 1 1 auto; min-width: 100%; width: 100%; height: 100%; padding: 0 4px 4px; box-sizing: border-box; } .tnl-row-gallery-charts--expanded .tnl-hscroll-pane__content { min-width: 100%; width: 100%; } .tnl-charts-expanded-inner .tnl-chart-card--expanded { flex: 1; width: 100%; height: 100%; max-height: none; border: none; border-radius: 0; gap: 8px; box-sizing: border-box; } .tnl-charts-track { display: flex; flex-direction: row; align-items: stretch; gap: 10px; padding: 10px; height: 100%; box-sizing: border-box; width: 100%; min-width: 0; } .tnl-charts-track > .tnl-chart-card { flex: 1 1 0; width: 0; min-width: 0; max-width: none; } .tnl-chart-card { position: relative; flex: 1 1 0; width: 0; min-width: 0; height: 280px; max-height: 280px; display: flex; flex-direction: column; gap: 6px; border: 1px solid var(--se-border, var(--border)); border-radius: 10px; background: var(--se-panel-card-bg, var(--bg2)); overflow: hidden; box-sizing: border-box; } .tnl-chart-card-body { position: relative; flex: 1; min-height: 0; display: flex; flex-direction: column; } .tnl-chart-card--expanded .tnl-chart-card-body { flex: 1; min-height: 0; } .tnl-chart-card--placeholder { align-items: center; justify-content: center; } .tnl-chart-card-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 8px 10px 0; flex-shrink: 0; } .tnl-chart-card-label { font-size: 12px; font-weight: 700; } .tnl-chart-card-meta { font-size: 10px; color: var(--text3); font-weight: 600; } .tnl-mini-chart-canvas { position: relative; flex: 0 0 236px; height: 236px; max-height: 236px; min-height: 0; display: flex; flex-direction: column; overflow: hidden; } .tnl-mini-chart-canvas--fill { flex: 1 1 auto; height: 100%; max-height: none; } .tnl-mini-chart-canvas > .tv-chart-wrap { flex: 1 1 0; min-height: 0; max-height: 100%; width: 100%; overflow: hidden !important; } .tnl-mini-chart-loading { position: absolute; inset: 0; z-index: 2; display: flex; align-items: center; justify-content: center; font-size: 11px; color: var(--text3); background: color-mix(in srgb, var(--bg2) 80%, transparent); } .tnl-mini-chart-placeholder { flex: 0 0 236px; height: 236px; max-height: 236px; display: flex; align-items: center; justify-content: center; font-size: 11px; color: var(--text3); } .tnl-mini-chart-placeholder--fill { flex: 1; height: 100%; max-height: none; } /* 차트 하단 우측 — 펼쳐보기 / 원래보기 */ .tnl-chart-view-btn { position: absolute; right: 8px; bottom: 8px; z-index: 4; display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; padding: 0; border: 1px solid color-mix(in srgb, var(--accent, #3f7ef5) 35%, var(--se-border, var(--border))); border-radius: 8px; background: color-mix(in srgb, var(--bg2) 88%, transparent); color: var(--accent, #3f7ef5); cursor: pointer; box-shadow: 0 2px 8px color-mix(in srgb, var(--bg) 50%, transparent); transition: background 0.15s, border-color 0.15s, transform 0.1s; } .tnl-chart-view-btn:hover { background: color-mix(in srgb, var(--accent, #3f7ef5) 18%, var(--bg2)); border-color: var(--accent, #3f7ef5); } .tnl-chart-view-btn:active { transform: scale(0.96); } .tnl-chart-view-btn--restore { color: var(--text2); border-color: var(--se-border, var(--border)); background: color-mix(in srgb, var(--bg3) 92%, transparent); } .tnl-chart-view-btn--restore:hover { color: var(--text); border-color: var(--accent, #7aa2f7); background: color-mix(in srgb, var(--accent, #7aa2f7) 12%, var(--bg3)); } .tnl-muted { font-size: 12px; color: var(--text3); margin: 0; } .tnl-list--gallery { gap: 12px; } /* 툴바 — 좌: 필터·액션 · 우: 목록/그리드·배치·삭제 */ .tnl-page--with-right .tnl-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; } .tnl-toolbar-end { display: flex; align-items: center; gap: 8px; margin-left: auto; flex-shrink: 0; } .tnl-layout-toggle { flex-shrink: 0; } /* 그리드 n×n 배치 선택 */ .tnl-grid-layout-picker { position: relative; flex-shrink: 0; } .tnl-grid-layout-trigger { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; padding: 0; border: 1px solid var(--se-border, var(--border)); border-radius: 8px; background: var(--bg2, var(--se-panel-card-bg)); color: var(--text2); cursor: pointer; transition: border-color 0.15s, background 0.15s, color 0.15s; } .tnl-grid-layout-trigger:hover:not(:disabled) { border-color: var(--accent, #3f7ef5); color: var(--accent, #3f7ef5); background: color-mix(in srgb, var(--accent, #3f7ef5) 10%, var(--bg2)); } .tnl-grid-layout-trigger--open { border-color: var(--accent, #3f7ef5); color: var(--accent, #3f7ef5); box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent, #3f7ef5) 35%, transparent); } .tnl-grid-layout-trigger--disabled { opacity: 0.4; cursor: not-allowed; } .tnl-grid-layout-popover { position: absolute; top: calc(100% + 8px); right: 0; z-index: 120; width: min(320px, calc(100vw - 48px)); max-height: min(420px, 70vh); overflow-y: auto; padding: 10px 12px 12px; border-radius: 10px; border: 1px solid var(--se-border, var(--border)); background: var(--bg2, #1a1f2e); box-shadow: 0 12px 32px color-mix(in srgb, var(--bg) 55%, transparent), 0 0 0 1px color-mix(in srgb, var(--text3) 12%, transparent); } .tnl-grid-layout-popover-title { margin: 0 0 10px; font-size: 11px; font-weight: 700; color: var(--text3); letter-spacing: 0.04em; } .tnl-grid-layout-group { display: flex; align-items: center; gap: 8px; padding: 4px 0; border-top: 1px solid color-mix(in srgb, var(--border) 80%, transparent); } .tnl-grid-layout-group:first-of-type { border-top: none; padding-top: 0; } .tnl-grid-layout-group-lbl { flex: 0 0 14px; font-size: 11px; font-weight: 600; color: var(--text3); text-align: center; } .tnl-grid-layout-group-row { display: flex; flex-wrap: wrap; gap: 6px; flex: 1; min-width: 0; } .tnl-grid-preset-btn { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 32px; padding: 0; border: 1px solid transparent; border-radius: 6px; background: transparent; color: var(--text2); cursor: pointer; transition: border-color 0.12s, background 0.12s, color 0.12s; } .tnl-grid-preset-btn:hover { background: color-mix(in srgb, var(--accent, #3f7ef5) 10%, transparent); color: var(--text); } .tnl-grid-preset-btn--on { border-color: var(--accent, #3f7ef5); background: color-mix(in srgb, var(--accent, #3f7ef5) 14%, transparent); color: var(--accent, #3f7ef5); } .tnl-grid-preset-icon-svg { display: block; } /* 그리드형 — 목록형과 동일한 알림 상세 카드 · n×n */ .tnl-list-wrap.tnl-list-wrap--grid { flex: 1; min-height: 0; overflow: hidden; display: flex; flex-direction: column; padding: 12px 24px 24px; box-sizing: border-box; container-type: inline-size; container-name: tnl-grid-wrap; } ul.tnl-list.tnl-list--grid { flex: 1; min-height: 0; width: 100%; display: grid; flex-direction: unset; grid-auto-rows: auto; gap: 14px; align-content: start; align-items: start; list-style: none; margin: 0; padding: 4px 4px 16px; overflow-y: auto; overflow-x: hidden; overscroll-behavior: contain; -webkit-overflow-scrolling: touch; } @container tnl-grid-wrap (max-width: 640px) { ul.tnl-list.tnl-list--grid { grid-template-columns: minmax(0, 1fr) !important; } } @container tnl-grid-wrap (max-width: 960px) { ul.tnl-list.tnl-list--grid.tnl-grid--cols-3, ul.tnl-list.tnl-list--grid.tnl-grid--cols-4, ul.tnl-list.tnl-list--grid.tnl-grid--cols-5 { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } } @container tnl-grid-wrap (max-width: 1200px) { ul.tnl-list.tnl-list--grid.tnl-grid--cols-4, ul.tnl-list.tnl-list--grid.tnl-grid--cols-5 { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; } } .tnl-row.tnl-row--grid { display: block; min-width: 0; width: 100%; border: none; background: transparent; border-radius: 0; overflow: visible; } /* 목록형과 동일 카드 박스(544×300) — 그리드 셀 너비에 맞춤 */ .tnl-row--grid .tnl-summary-card, .tnl-summary-card--grid { flex: none; width: 100%; max-width: none; height: 300px; max-height: 300px; min-height: 300px; } .tnl-row--grid.tnl-row--unread .tnl-summary-card { border-color: rgba(122, 162, 247, 0.45); } .tnl-row--grid .tnl-summary-card--selected, .tnl-row--grid.tnl-row--selected .tnl-summary-card { border-color: var(--accent, #7aa2f7); box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent, #7aa2f7) 35%, transparent); } .tnl-row--gallery.tnl-row--selected .tnl-hscroll-pane, .tnl-row--gallery.tnl-row--selected .tnl-summary-card--selected { border-color: var(--accent, #7aa2f7); box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent, #7aa2f7) 35%, transparent); } .tnl-list--gallery .tnl-row--gallery { width: 100%; } @container tnl-main (max-width: 900px) { .tnl-row-gallery { flex-direction: column; height: auto; max-height: none; align-items: stretch; } .tnl-row-gallery { --tnl-summary-card-width: min(100%, 320px); } .tnl-row-gallery-detail, .tnl-row-gallery--chart-expanded .tnl-row-gallery-detail { flex: 0 0 var(--tnl-summary-card-width); width: var(--tnl-summary-card-width); min-width: var(--tnl-summary-card-width); max-width: var(--tnl-summary-card-width); } .tnl-row-gallery-charts, .tnl-row-gallery--chart-expanded .tnl-row-gallery-charts { flex: 1 1 auto; width: 100%; max-width: 100%; min-width: 0; } .tnl-hscroll-pane { height: 300px; max-height: 300px; } .tnl-row-gallery-charts .tnl-hscroll-pane__viewport { overflow-x: auto; } .tnl-summary-card { min-width: 0; width: 100%; height: 100%; max-height: none; } .tnl-charts-track { min-width: max-content; width: max-content; } .tnl-charts-track > .tnl-chart-card, .tnl-charts-track > .tnl-signal-slot { flex: 0 0 min(300px, 88vw); width: min(300px, 88vw); min-width: min(300px, 88vw); max-width: none; } }