| .cg-dash-grid { | |
| grid-template-columns: repeat(12, minmax(0, 1fr)); | |
| } | |
| .cg-ch-card { | |
| min-height: 240px; | |
| overflow: hidden; | |
| } | |
| .cg-ch-viz { | |
| flex: 1 1 150px; | |
| min-height: 120px; | |
| overflow: hidden; | |
| } | |
| .cg-ch-viz--kpi { | |
| min-height: 96px; | |
| } | |
| .cg-vega-frame, | |
| .cg-vega-host, | |
| .cg-vega-host > .vega-embed { | |
| width: 100%; | |
| height: 100%; | |
| min-height: 0; | |
| } | |
| .cg-vega-host canvas, | |
| .cg-vega-host svg { | |
| display: block; | |
| max-width: 100%; | |
| } | |
| .cg-ch-loading { | |
| display: grid; | |
| height: 100%; | |
| min-height: 120px; | |
| place-items: center; | |
| color: var(--lp-muted); | |
| font-size: var(--lp-fs-3xs); | |
| } | |
| /* ========================================================================== | |
| Wave-16 C-CHARTCAP (b) β the delta line under a KPI number. | |
| ========================================================================== | |
| Colour states direction, not judgment: green up / red down is the finance | |
| read `pages_sales` used, and `flat`/`off` stay muted. The refusal notes | |
| ("no orders yet") wear the muted tone too β they are honesty, not alarm. */ | |
| .cg-ch-kpidelta { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 4px; | |
| padding: 2px 8px 6px; | |
| font-size: var(--lp-fs-2xs); | |
| font-weight: 600; | |
| color: var(--lp-muted); | |
| } | |
| .cg-ch-kpidelta.is-up { | |
| color: var(--lp-green-deep); | |
| } | |
| .cg-ch-kpidelta.is-down { | |
| color: var(--lp-red-deep); | |
| } | |
| /* ========================================================================== | |
| Wave-16 C-CHARTCAP (c) β the table kind. | |
| ========================================================================== | |
| A summary card, styled like the sheet: hairline rows, numbers right-aligned | |
| in tabular figures, the group column free to truncate. The card scrolls its | |
| own overflow so a tall table never stretches the board row. */ | |
| .cg-ch-table { | |
| height: 100%; | |
| overflow: auto; | |
| } | |
| .cg-ch-table table { | |
| width: 100%; | |
| border-collapse: collapse; | |
| font-size: var(--lp-fs-2xs); | |
| } | |
| .cg-ch-table th, | |
| .cg-ch-table td { | |
| padding: 3px 8px; | |
| text-align: left; | |
| border-bottom: 1px solid var(--lp-line); | |
| white-space: nowrap; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| max-width: 180px; | |
| } | |
| .cg-ch-table th { | |
| position: sticky; | |
| top: 0; | |
| background: var(--lp-surface); | |
| color: var(--lp-muted); | |
| font-weight: 600; | |
| font-size: var(--lp-fs-3xs); | |
| } | |
| .cg-ch-table .cg-ch-td-num { | |
| text-align: right; | |
| font-variant-numeric: tabular-nums; | |
| } | |
| /* ========================================================================== | |
| Wave 14 items 18 + R7 β the chart editor's label column. | |
| ========================================================================== | |
| The base rule pins every editor label to `flex: 0 0 54px` (index.css:3917), | |
| which was sized for "Measure" / "Of" / "By". Item 18 replaces those with | |
| words a non-analyst can act on β "Which number", "Grouped by", "Break down | |
| by", "How far back", "Bottom axis label" β and every one of them WRAPS to two | |
| lines in 54px, which is exactly the failure R7 is a sweep for: a wrapped | |
| label breaks the row rhythm the whole pane is read by. | |
| Overridden from HERE rather than at the base rule because `index.css` is | |
| another session's fence this wave. `.cg-ch-cfgbody .cg-ch-row > span` is | |
| (0,2,1) against the base's (0,1,1), so this wins on SPECIFICITY and never on | |
| bundle order β a tie decided by import sequence is not a thing to bet a | |
| layout on ([[loopable-nav-logo-toggle]]). | |
| `nowrap` is the assertion, not the width: if a future label outgrows this | |
| column it will overflow visibly instead of quietly reflowing, which is the | |
| failure mode you can see. */ | |
| .cg-ch-cfgbody .cg-ch-row > span { | |
| flex: 0 0 104px; | |
| white-space: nowrap; | |
| } | |
| /* The checkbox row reads left-to-right β box, then sentence β so its label is | |
| not a column head and must not take the column width. */ | |
| .cg-ch-cfgbody .cg-ch-check > span { | |
| flex: 1 1 auto; | |
| white-space: normal; | |
| } | |
| @media (max-width: 820px) { | |
| .cg-ch-card { | |
| grid-column: span 12 ; | |
| } | |
| /* Below the card's own breakpoint the pane is narrow enough that a 104px | |
| label column starves the control beside it. The labels stay unwrapped and | |
| the row scrolls its control instead. */ | |
| .cg-ch-cfgbody .cg-ch-row > span { | |
| flex-basis: 88px; | |
| } | |
| } | |