| .heatmap-grid { |
| display: grid; |
| grid-template-columns: repeat(3, minmax(0, 1fr)); |
| gap: 16px; |
| flex: 1 1 auto; |
| min-height: 0; |
| align-items: stretch; |
| } |
|
|
| .heatmap-card { |
| display: flex; |
| flex-direction: column; |
| overflow: hidden; |
| border-radius: 20px; |
| border: 1px solid rgba(23, 33, 29, 0.08); |
| background: var(--panel-strong); |
| min-height: 0; |
| } |
|
|
| .heatmap-header { |
| padding: 14px 16px; |
| font-weight: 700; |
| border-bottom: 1px solid rgba(23, 33, 29, 0.08); |
| } |
|
|
| .plot-surface { |
| width: 100%; |
| min-height: 360px; |
| } |
|
|
| .plot-surface-hero { |
| min-height: clamp(230px, 33vh, 380px); |
| flex: 1 1 auto; |
| } |
|
|
| .plot-surface-tall { |
| min-height: clamp(104px, 13vh, 154px); |
| } |
|
|
| .plot-surface-wide { |
| min-height: clamp(168px, 22vh, 250px); |
| height: 100%; |
| } |
|
|
| .chart-wrap { |
| position: relative; |
| min-height: 0; |
| padding: 2px 0 0; |
| flex: 1 1 auto; |
| display: flex; |
| } |
|
|
| #loss-chart { |
| width: 100%; |
| height: 100%; |
| min-height: 0; |
| border-radius: 18px; |
| border: 1px solid rgba(23, 33, 29, 0.08); |
| background: |
| linear-gradient(180deg, rgba(13, 143, 113, 0.05), rgba(13, 143, 113, 0)), |
| white; |
| } |
|
|
| .chart-empty { |
| position: absolute; |
| inset: 20px; |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| padding: 24px; |
| text-align: center; |
| border: 1px dashed rgba(23, 33, 29, 0.18); |
| border-radius: 18px; |
| background: rgba(255, 252, 245, 0.85); |
| color: var(--muted); |
| font-weight: 500; |
| z-index: 2; |
| } |
|
|
| .chart-empty[hidden] { |
| display: none !important; |
| } |
|
|
| .error-column-card { |
| display: flex; |
| flex-direction: column; |
| } |
|
|
| .error-column { |
| display: grid; |
| grid-template-rows: repeat(2, minmax(0, 1fr)); |
| gap: 14px; |
| padding: 14px; |
| flex: 1 1 auto; |
| min-height: 0; |
| } |
|
|
| .error-panel { |
| display: grid; |
| grid-template-columns: 104px minmax(0, 1fr); |
| overflow: hidden; |
| border-radius: 16px; |
| border: 1px solid rgba(23, 33, 29, 0.08); |
| background: rgba(255, 255, 255, 0.55); |
| } |
|
|
| .error-panel-title { |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| padding: 12px 10px; |
| font-size: 0.82rem; |
| font-weight: 700; |
| text-align: center; |
| color: var(--muted); |
| border-right: 1px solid rgba(23, 33, 29, 0.08); |
| background: rgba(255, 252, 245, 0.72); |
| } |
|
|
| .content-pane>.canvas-card:first-child { |
| flex: 1 1 56%; |
| display: flex; |
| flex-direction: column; |
| } |
|
|
| .content-pane>.canvas-card:last-child { |
| flex: 1 1 44%; |
| display: flex; |
| flex-direction: column; |
| min-height: 0; |
| } |
|
|
| @media (max-width: 1500px) { |
| .heatmap-grid { |
| grid-template-columns: repeat(2, minmax(0, 1fr)); |
| } |
|
|
| .error-column-card { |
| grid-column: 1 / -1; |
| } |
| } |
|
|
| @media (max-width: 1200px) { |
| .timeline-title-row { |
| flex-wrap: wrap; |
| } |
|
|
| .timeline-slider-inline { |
| flex: 1 1 220px; |
| min-width: 180px; |
| max-width: 320px; |
| } |
| } |
|
|
| @media (max-width: 1100px) { |
| body { |
| height: auto; |
| overflow: auto; |
| } |
|
|
| .page-shell { |
| grid-template-columns: 1fr; |
| height: auto; |
| } |
|
|
| .heatmap-grid { |
| grid-template-columns: 1fr; |
| } |
|
|
| .control-rail, |
| .content-pane { |
| overflow: visible; |
| } |
|
|
| .analysis-modal { |
| padding: 14px; |
| } |
|
|
| .analysis-modal-dialog { |
| width: min(100%, calc(100vw - 28px)); |
| max-height: calc(100vh - 28px); |
| } |
|
|
| .analysis-modal-content { |
| padding: 22px 18px 22px; |
| max-height: calc(100vh - 28px); |
| } |
|
|
| .analysis-hint { |
| right: auto; |
| left: -12px; |
| } |
|
|
| .analysis-hint::before { |
| right: auto; |
| left: 18px; |
| } |
| } |