{"version":3,"file":"blocks/Chart/style-index.css","mappings":";;;AAAA,gBAAgB;AAAhB;;;;;EAAA;ACAA;;;;;;;;;;EAAA;AAYA;EAGC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;ADID;;ACDA;EACC;EACA;EACA;ADID;;ACDA;;;;;;;EAAA;AAQA;EACC;EACA;EACA;ADID;;ACDA;EACC;EACA;EACA;EACA;OAAA;EACA;EACA;ADID;;ACDA;EACC;ADID;;ACDA;EACC;EACA;EACA;ADID;;ACDA;EACC;ADID;;ACDA;EACC;ADID;;ACDA;AACA;EACC;EACA;EACA;ADID;;ACDA;EACC;EACA;EACA;ADID;;ACDA;EACC;EACA;ADID;;ACDA;;;;;EAAA;AAMA;EACC;EACA;EACA;EACA;EACA;ADID;;ACDA;EACC;ADID;;ACDA;EACC;EACA;EACA;EACA;EACA;EACA;ADID;ACFC;EACC;ADIF;;ACAA;AAEC;EACC;EACA;EACA;ADEF;ACCC;EACC;ADCF;;ACGA;AAEC;EACC;EACA;ADDF;ACIC;EACC;EACA;EACA;ADFF;ACPA;EAYC;;;;;IAAA;ADGD;ACGC;EACC;ADDF;ACIC;EACC;ADFF;ACKC;EACC;EACA;ADHF;ACMC;EACC;EACA;ADJF;;ACQA;;;EAAA;AAIA;EACC;ADLD;ACOC;EACC;EACA;ADLF;ACOE;EACC;EACA;EACA;EACA;EACA;EACA;ADLH;;ACUA;;;;EAAA;AAKA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;ADPD;;ACUA;EACC;EACA;EACA;EACA;ADPD;;ACUA;EACC;EACA;ADPD;;ACUA;EACC;EACA;EACA;ADPD;;ACUA;EACC;EACA;EACA;ADPD;;ACUA;EACC;EACA;ADPD;;ACUA;;;EAAA;AAIA;EACC;ADPD;;ACUA;EACC;EACA;EACA;EACA;ADPD;ACSC;EACC;ADPF;;ACWA;EACC;EACA;ADRD;;ACWA;EACC;EACA;EACA;EACA;ADRD;ACUC;;EAEC;EACA;EACA;EACA;ADRF;ACWC;EACC;EACA;ADTF;ACYC;;EAEC;EACA;ADVF;;AEpRA;;;;;;;EAAA;AASA;EACC;EACA;EACA;AFsRD;;AEnRA;AACA;EACC;EACA;AFsRD;;AEnRA;EACC;AFsRD;;AEnRA;EACC;EACA;EACA;EACA;AFsRD;;AEnRA;EACC;EACA;EACA;EACA;AFsRD;;AEnRA;;;EAAA;AAIA;EACC;EACA;EACA;AFsRD;;AEnRA;EACC;AFsRD;;AEnRA;EACC;EACA;EACA;EACA;AFsRD;;AEnRA;AACA;EACC;AFsRD;;AEnRA;EACC;EACA;AFsRD;;AElRC;EACC;EACA;EACA;EACA;AFqRF;AElRC;EACC;EAGA;EACA;EACA;EACA;EACA;EACA;AFkRF;AE/QC;EACC;AFiRF;;AE5QC;EACC;EACA;EACA;EACA;AF+QF;AE5QC;EACC;EACA;EACA;EACA;EACA;EACA;EACA;AF8QF;AE3QC;EACC;AF6QF;;AEzQA;;;;;EAAA;AAOC;EACC;AF2QF;AExQC;EACC;AF0QF;AEvQC;EACC;AFyQF;;AErQA;;;;;EAAA;AAMA;EACC;EACA;EACA;EACA;EACA;AFwQD;;AErQA;;;;EAAA;AAKA;;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AFwQD;;AErQA;EACC;EACA;EACA;AFwQD;;AErQA;EACC;EACA;EACA;AFwQD;;AErQA;EACC;EACA;EACA;AFwQD;;AErQA;EACC;EACA;EACA;AFwQD;;AErQA;;;;EAAA;AAKA;EACC;EACA;AFwQD;;AErQA;EACC;EACA;EACA;EACA;AFwQD;;AErQA;EACC;EACA;EACA;AFwQD;;AErQA;EACC;EACA;EACA;EACA;AFwQD;;AErQA;;;EAAA;AAIA;EACC;EACA;EACA;EACA;AFwQD;;AErQA;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AFwQD;;AErQA;EACC;EACA;EACA;EACA;AFwQD;;AErQA;EACC;EACA;AFwQD;;AGxgBA;;;;;;;;;;EAAA;AAcC;;EACC;EACA;EACA;AHygBF;;AGrgBA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AHwgBD;;AGrgBA;;;EAAA;AAIA;EACC;EACA;AHwgBD;;AGrgBA;EACC;EACA;EACA;AHwgBD;;AGrgBA;EACC;EACA;AHwgBD;;AGrgBA;;;;;;EAAA;AAQC;;;;EAIC;EACA;AHugBF;AGngBC;;EAEC;AHqgBF;AGlgBC;;EAEC;AHogBF;;AGhgBA;EACC;EACA;AHmgBD;;AGhgBA;EACC;EACA;EACA;AHmgBD;;AGhgBA;;;EAAA;AAIA;EACC;EACA;EACA;EACA;EACA;AHmgBD;;AGhgBA;AACA;EACC;EACA;AHmgBD;;AGhgBA;EACC;AHmgBD;;AGhgBA;AAGC;;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AHkgBF;AG/fC;;;EAEC;AHkgBF;;AG9fA;;;;;;;EAAA;AAQA;EACC;IACC;EHigBA;AACF;AG9fA;EACC;IACC;EHggBA;AACF;AG7fA;EACC;IACC;EH+fA;AACF;AG5fA;EACC;IACC;EH8fA;AACF;AG3fA;EACC;IACC;IACA;EH6fA;AACF;AGzfC;EACC;EACA;EACA;AH2fF;AGxfC;EACC;EACA;EACA;AH0fF;AGvfC;EACC;AHyfF;AGtfC;EACC;EACA;AHwfF;AGrfC;;;EAGC;EACA;AHufF;;AGnfA;;;;EAAA;AAKA;EACC;;IAEC;EHsfA;AACF,C","sources":["webpack://brandy-blocks/./src/blocks/Chart/style.scss","webpack://brandy-blocks/./src/blocks/Chart/_chart-layout.scss","webpack://brandy-blocks/./src/blocks/Chart/_chart-marks.scss","webpack://brandy-blocks/./src/blocks/Chart/_chart-interaction.scss"],"sourcesContent":["/*\n * Chart block styles.\n *\n * Loaded on the frontend and imported by the editor preview, so the two render\n * from one stylesheet and cannot drift apart.\n */\n\n@import './chart-layout';\n@import './chart-marks';\n@import './chart-interaction';\n","/*\n * Chart layout — the frame, the two axes, the legend and the table view.\n *\n * The frame is a two-by-two grid whose gutter track is `auto`, so the browser\n * sizes it to the tick labels it actually renders. Nothing here measures text.\n *\n * Which axis holds values and which holds categories swaps with the\n * orientation; the cells do not. That is why the renderer emits generic\n * `--tick-pos` / `--slot-start` percentages and lets these rules decide whether\n * a percentage means \"up from the baseline\" or \"across from the axis\".\n */\n\n.wp-block-brandy-chart {\n\t// Fallbacks for the tokens render.php sets inline, so the block still reads\n\t// if it is ever rendered without them (a stale cached post, for instance).\n\t--chart-surface: #ffffff;\n\t--chart-grid: #e1e0d9;\n\t--chart-axis: #c3c2b7;\n\t--chart-ink: #0b0b0b;\n\t--chart-muted: #898781;\n\t--chart-bar-max: 24px;\n\t--chart-plot-height: 320px;\n\t--chart-min-width: 0px;\n\n\tcolor: var(--chart-ink);\n}\n\n.brandy-chart__figure {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 16px;\n}\n\n/*\n * The scroll box.\n *\n * The padding/negative-margin pair is not decoration: `overflow-x: auto` forces\n * `overflow-y` to clip too, and a value label sitting above the tallest bar\n * would be cut off. The padding puts that headroom inside the clipping box; the\n * margin takes it back out of the layout.\n */\n.brandy-chart__scroll {\n\toverflow-x: auto;\n\tpadding-top: 24px;\n\tmargin-top: -24px;\n}\n\n.brandy-chart__frame {\n\tdisplay: grid;\n\tgrid-template-columns: auto minmax(0, 1fr);\n\tgrid-template-rows: minmax(0, 1fr) auto;\n\tcolumn-gap: 12px;\n\trow-gap: 8px;\n\tmin-width: var(--chart-min-width);\n}\n\n.brandy-chart__gutter {\n\tgrid-area: 1 / 1;\n}\n\n.brandy-chart__plot {\n\tgrid-area: 1 / 2;\n\tposition: relative;\n\theight: var(--chart-plot-height);\n}\n\n.brandy-chart__corner {\n\tgrid-area: 2 / 1;\n}\n\n.brandy-chart__footer {\n\tgrid-area: 2 / 2;\n}\n\n/* Axis text is muted ink and never the series colour. */\n.brandy-chart__axis {\n\tfont-size: 0.8125rem;\n\tline-height: 1.3;\n\tcolor: var(--chart-muted);\n}\n\n.brandy-chart__axis--value {\n\tposition: relative;\n\theight: 100%;\n\tfont-variant-numeric: tabular-nums;\n}\n\n.brandy-chart__tick {\n\tposition: absolute;\n\twhite-space: nowrap;\n}\n\n/*\n * The gutter's width. Every tick above is absolutely positioned and so\n * contributes no intrinsic width — without this in-flow copy of the longest\n * label the `auto` track collapses to zero and the ticks hang off the left\n * edge of the chart.\n */\n.brandy-chart__tick-sizer {\n\tdisplay: block;\n\theight: 0;\n\toverflow: hidden;\n\tvisibility: hidden;\n\twhite-space: nowrap;\n}\n\n.brandy-chart__axis--category {\n\tdisplay: flex;\n}\n\n.brandy-chart__category {\n\tflex: 1 1 0;\n\tmin-width: 0;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\ttext-align: center;\n\n\t> span {\n\t\toverflow-wrap: anywhere;\n\t}\n}\n\n/* Vertical: values climb the left gutter, categories sit under their bands. */\n.brandy-chart--vertical {\n\t.brandy-chart__tick {\n\t\tright: 0;\n\t\tbottom: var(--tick-pos);\n\t\ttransform: translateY(50%);\n\t}\n\n\t.brandy-chart__axis--category {\n\t\tflex-direction: row;\n\t}\n}\n\n/* Horizontal: the two axes trade places. */\n.brandy-chart--horizontal {\n\t.brandy-chart__axis--value {\n\t\theight: auto;\n\t\tmin-height: 1.4em;\n\t}\n\n\t.brandy-chart__tick {\n\t\ttop: 0;\n\t\tleft: var(--tick-pos);\n\t\ttransform: translateX(-50%);\n\t}\n\n\t/*\n\t * The end ticks sit at 0% and 100%, so centring them pushes half of each\n\t * label past the plot and the whole page picks up a horizontal scrollbar.\n\t * They align to their edge instead. (The sizer is the first span, which is\n\t * why the first tick is matched through it rather than with :first-of-type.)\n\t */\n\t.brandy-chart__tick-sizer + .brandy-chart__tick {\n\t\ttransform: none;\n\t}\n\n\t.brandy-chart__tick:last-of-type {\n\t\ttransform: translateX(-100%);\n\t}\n\n\t.brandy-chart__axis--category {\n\t\tflex-direction: column;\n\t\theight: 100%;\n\t}\n\n\t.brandy-chart__category {\n\t\tjustify-content: flex-end;\n\t\ttext-align: right;\n\t}\n}\n\n/*\n * Rotated category labels. The label is taken out of flow so a long string\n * cannot widen its band, and the axis reserves the height the rotation needs.\n */\n.brandy-chart__axis--rotated {\n\tmin-height: 72px;\n\n\t.brandy-chart__category {\n\t\tposition: relative;\n\t\talign-items: flex-start;\n\n\t\t> span {\n\t\t\tposition: absolute;\n\t\t\ttop: 2px;\n\t\t\tright: 50%;\n\t\t\ttransform: rotate(-45deg);\n\t\t\ttransform-origin: 100% 0;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t}\n}\n\n/*\n * Legend. Present for two or more identities, never for one. The key mirrors\n * the mark it stands for; the label keeps the muted ink token, because a light\n * categorical hue is illegible as text.\n */\n.brandy-chart__legend {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: center;\n\tgap: 8px 20px;\n\tmargin: 0;\n\tpadding: 0;\n\tlist-style: none;\n}\n\n.brandy-chart__legend-item {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 8px;\n\tmargin: 0;\n}\n\n.brandy-chart__legend-key {\n\tflex: none;\n\tbackground: var(--key-color);\n}\n\n.brandy-chart__legend-key--chip {\n\twidth: 12px;\n\theight: 12px;\n\tborder-radius: 3px;\n}\n\n.brandy-chart__legend-key--line {\n\twidth: 16px;\n\theight: 2px;\n\tborder-radius: 1px;\n}\n\n.brandy-chart__legend-label {\n\tfont-size: 0.8125rem;\n\tcolor: var(--chart-muted);\n}\n\n/*\n * The table view. Not a fallback — the chart's equivalent, and the relief\n * channel the palette's sub-3:1 slots require.\n */\n.brandy-chart__data {\n\tmargin-top: 16px;\n}\n\n.brandy-chart__data-toggle {\n\tcursor: pointer;\n\tfont-size: 0.8125rem;\n\tcolor: var(--chart-muted);\n\tlist-style-position: inside;\n\n\t&:hover {\n\t\tcolor: var(--chart-ink);\n\t}\n}\n\n.brandy-chart__data-scroll {\n\toverflow-x: auto;\n\tmargin-top: 10px;\n}\n\n.brandy-chart__table {\n\twidth: 100%;\n\tborder-collapse: collapse;\n\tfont-size: 0.8125rem;\n\tfont-variant-numeric: tabular-nums;\n\n\tth,\n\ttd {\n\t\tpadding: 6px 12px;\n\t\tborder-bottom: 1px solid var(--chart-grid);\n\t\ttext-align: right;\n\t\twhite-space: nowrap;\n\t}\n\n\tthead th {\n\t\tcolor: var(--chart-muted);\n\t\tfont-weight: 500;\n\t}\n\n\tth[scope='row'],\n\tthead th:first-child {\n\t\ttext-align: left;\n\t\tfont-weight: 500;\n\t}\n}\n","/*\n * Chart marks — bars, lines, areas, slices and their direct labels.\n *\n * The mark specs are fixed: bars cap at 24px and never fill their slot, a 2px\n * surface gap does the separating rather than a border, data-ends carry a 4px\n * radius and stay square at the baseline, lines are 2px, markers are 8px inside\n * a 2px surface ring, and an area fill is a 10% wash rather than a solid block.\n */\n\n.brandy-chart__gridlines {\n\tposition: absolute;\n\tinset: 0;\n\tpointer-events: none;\n}\n\n/* Solid hairlines, one step off the surface. Never dashed. */\n.brandy-chart__gridline {\n\tposition: absolute;\n\tbackground: var(--chart-grid);\n}\n\n.brandy-chart__gridline--zero {\n\tbackground: var(--chart-axis);\n}\n\n.brandy-chart--vertical .brandy-chart__gridline {\n\tleft: 0;\n\tright: 0;\n\theight: 1px;\n\tbottom: var(--grid-pos);\n}\n\n.brandy-chart--horizontal .brandy-chart__gridline {\n\ttop: 0;\n\tbottom: 0;\n\twidth: 1px;\n\tleft: var(--grid-pos);\n}\n\n/*\n * Bands. A band is one category's share of the plot and doubles as its hit\n * target — a full-height column is far easier to hit than a 24px bar.\n */\n.brandy-chart__bands {\n\tposition: absolute;\n\tinset: 0;\n\tdisplay: flex;\n}\n\n.brandy-chart--horizontal .brandy-chart__bands {\n\tflex-direction: column;\n}\n\n.brandy-chart__band {\n\tposition: relative;\n\tflex: 1 1 0;\n\tmin-width: 0;\n\tmin-height: 0;\n}\n\n/* A slot is one series' share of a band; the bar is centred inside it. */\n.brandy-chart__slot {\n\tposition: absolute;\n}\n\n.brandy-chart__bar {\n\tposition: absolute;\n\tbackground: var(--bar-color);\n}\n\n.brandy-chart--vertical {\n\t.brandy-chart__slot {\n\t\ttop: 0;\n\t\tbottom: 0;\n\t\tleft: var(--slot-start);\n\t\twidth: var(--slot-size);\n\t}\n\n\t.brandy-chart__bar {\n\t\tleft: 50%;\n\t\t// The 2px is the surface gap between neighbouring bars — white doing\n\t\t// the separating, rather than a stroke drawn around each mark.\n\t\twidth: calc(100% - 2px);\n\t\tmax-width: var(--chart-bar-max);\n\t\ttransform: translateX(-50%);\n\t\tbottom: var(--bar-start);\n\t\theight: var(--bar-size);\n\t\tborder-radius: 4px 4px 0 0;\n\t}\n\n\t.brandy-chart__bar--negative {\n\t\tborder-radius: 0 0 4px 4px;\n\t}\n}\n\n.brandy-chart--horizontal {\n\t.brandy-chart__slot {\n\t\tleft: 0;\n\t\tright: 0;\n\t\ttop: var(--slot-start);\n\t\theight: var(--slot-size);\n\t}\n\n\t.brandy-chart__bar {\n\t\ttop: 50%;\n\t\theight: calc(100% - 2px);\n\t\tmax-height: var(--chart-bar-max);\n\t\ttransform: translateY(-50%);\n\t\tleft: var(--bar-start);\n\t\twidth: var(--bar-size);\n\t\tborder-radius: 0 4px 4px 0;\n\t}\n\n\t.brandy-chart__bar--negative {\n\t\tborder-radius: 4px 0 0 4px;\n\t}\n}\n\n/*\n * Stacked segments. Each one gives up 2px so the same surface gap separates\n * them, and `max()` keeps a segment thinner than the gap from going negative.\n * A stack rounds every segment evenly — an interior segment has no data-end to\n * be the rounded one.\n */\n.is-stacked {\n\t.brandy-chart__bar {\n\t\tborder-radius: 2px;\n\t}\n\n\t&.brandy-chart--vertical .brandy-chart__bar {\n\t\theight: max(0px, calc(var(--bar-size) - 2px));\n\t}\n\n\t&.brandy-chart--horizontal .brandy-chart__bar {\n\t\twidth: max(0px, calc(var(--bar-size) - 2px));\n\t}\n}\n\n/*\n * The line/area plot. Stretched to the plot box so the points line up with the\n * bands; `non-scaling-stroke` on the paths keeps the 2px stroke 2px through\n * that stretch, and `overflow: visible` keeps an end marker from being clipped\n * by the viewBox edge it sits on.\n */\n.brandy-chart__marks {\n\tposition: absolute;\n\tinset: 0;\n\twidth: 100%;\n\theight: 100%;\n\toverflow: visible;\n}\n\n/*\n * Direct labels. Always outside the mark end, never inside it — a label that\n * does not fit inside a bar would be clipped, and the value is in the tooltip\n * and the table regardless.\n */\n.brandy-chart__bar-label,\n.brandy-chart__point-label {\n\tposition: absolute;\n\tfont-size: 0.75rem;\n\tfont-weight: 600;\n\tline-height: 1;\n\twhite-space: nowrap;\n\tcolor: var(--chart-ink);\n\tfont-variant-numeric: tabular-nums;\n\tpointer-events: none;\n}\n\n.brandy-chart--vertical .brandy-chart__bar-label {\n\tleft: 50%;\n\tbottom: var(--label-pos);\n\ttransform: translate(-50%, -6px);\n}\n\n.brandy-chart--horizontal .brandy-chart__bar-label {\n\ttop: 50%;\n\tleft: var(--label-pos);\n\ttransform: translate(6px, -50%);\n}\n\n.brandy-chart__point-labels {\n\tposition: absolute;\n\tinset: 0;\n\tpointer-events: none;\n}\n\n.brandy-chart__point-label {\n\tleft: var(--label-x);\n\tbottom: var(--label-y);\n\ttransform: translate(-50%, -12px);\n}\n\n/*\n * Pie and donut. Unlike the cartesian plot this SVG keeps its aspect ratio, so\n * the square container and the square viewBox line up exactly — which is what\n * lets the HTML labels sit at the same percentages as the slices.\n */\n.brandy-chart__plot--radial {\n\tdisplay: flex;\n\tjustify-content: center;\n}\n\n.brandy-chart__radial {\n\tposition: relative;\n\theight: 100%;\n\taspect-ratio: 1;\n\tmax-width: 100%;\n}\n\n.brandy-chart__pie {\n\tdisplay: block;\n\twidth: 100%;\n\theight: 100%;\n}\n\n.brandy-chart__slice-label {\n\tposition: absolute;\n\tleft: var(--label-x);\n\ttop: var(--label-y);\n\ttransform: translate(-50%, -50%);\n}\n\n/*\n * The one place text may leave the text tokens: set inside a filled mark, where\n * PHP has already picked white or ink by the fill's own luminance.\n */\n.brandy-chart__slice-value {\n\tfont-size: 0.75rem;\n\tfont-weight: 600;\n\tcolor: var(--label-ink);\n\tfont-variant-numeric: tabular-nums;\n}\n\n/* The hole is the one place a chart gets a headline number for free. */\n.brandy-chart__center {\n\tposition: absolute;\n\tinset: 0;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tjustify-content: center;\n\tgap: 2px;\n\ttext-align: center;\n\tpointer-events: none;\n}\n\n.brandy-chart__center-value {\n\tfont-size: 1.5rem;\n\tfont-weight: 600;\n\tline-height: 1.1;\n\tcolor: var(--chart-ink);\n}\n\n.brandy-chart__center-label {\n\tfont-size: 0.75rem;\n\tcolor: var(--chart-muted);\n}\n","/*\n * Chart interaction — hover, focus and the reveal.\n *\n * The tooltips are pure CSS. Every value is already in the response, so hover\n * and keyboard focus need no script, no coordinate maths, and no hydration\n * delay — and the same content appears on `:focus-visible` as on `:hover`,\n * which is what makes the tooltip reachable from the keyboard.\n *\n * Tooltips enhance and never gate: the table view carries every value for a\n * reader who cannot hover at all.\n */\n\n.brandy-chart__band,\n.brandy-chart__slice-label {\n\t&:focus-visible {\n\t\toutline: 2px solid var(--chart-ink);\n\t\toutline-offset: 2px;\n\t\tborder-radius: 2px;\n\t}\n}\n\n.brandy-chart__tooltip {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 4px;\n\tz-index: 5;\n\ttransform: translateX(-50%);\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px;\n\tpadding: 8px 10px;\n\tborder-radius: 6px;\n\tbackground: var(--chart-ink);\n\tcolor: var(--chart-surface);\n\tfont-size: 0.75rem;\n\tline-height: 1.35;\n\twhite-space: nowrap;\n\tbox-shadow: 0 4px 16px rgba(0, 0, 0, 0.16);\n\topacity: 0;\n\tvisibility: hidden;\n\tpointer-events: none;\n\ttransition: opacity 0.12s ease;\n}\n\n/*\n * Anchored inside the plot rather than above it, so it is never clipped by the\n * scroll box; flipped at the ends so it cannot hang off the first or last band.\n */\n.brandy-chart__band:first-child .brandy-chart__tooltip {\n\tleft: 0;\n\ttransform: none;\n}\n\n.brandy-chart__band:last-child .brandy-chart__tooltip {\n\tleft: auto;\n\tright: 0;\n\ttransform: none;\n}\n\n.brandy-chart__slice-label .brandy-chart__tooltip {\n\ttop: auto;\n\tbottom: calc(100% + 6px);\n}\n\n/*\n * Reveal on `:focus`, not `:focus-visible`. The focus ring above is a\n * `:focus-visible` concern — it should not appear for a mouse click — but the\n * tooltip is the keyboard reader's only route to the value, and\n * `:focus-visible` is a browser heuristic that does not always fire. Showing it\n * for a click too costs nothing: hovering already shows it.\n */\n.has-tooltip {\n\t.brandy-chart__band:hover > .brandy-chart__tooltip,\n\t.brandy-chart__band:focus > .brandy-chart__tooltip,\n\t.brandy-chart__slice-label:hover > .brandy-chart__tooltip,\n\t.brandy-chart__slice-label:focus > .brandy-chart__tooltip {\n\t\topacity: 1;\n\t\tvisibility: visible;\n\t}\n\n\t// The hovered mark responds, so the reader can see what the readout is about.\n\t.brandy-chart__band:hover .brandy-chart__bar,\n\t.brandy-chart__band:focus .brandy-chart__bar {\n\t\tfilter: brightness(1.12);\n\t}\n\n\t.brandy-chart__slice-label:hover,\n\t.brandy-chart__slice-label:focus {\n\t\tz-index: 6;\n\t}\n}\n\n.brandy-chart__tooltip-title {\n\tcolor: inherit;\n\topacity: 0.72;\n}\n\n.brandy-chart__tooltip-row {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n}\n\n/*\n * A short stroke, not a filled box: at tooltip density a box is data-weight ink\n * doing a label's job. (Legends still mirror the mark.)\n */\n.brandy-chart__tooltip-key {\n\tflex: none;\n\twidth: 12px;\n\theight: 2px;\n\tborder-radius: 1px;\n\tbackground: var(--key-color);\n}\n\n/* The value leads; the reader already knows which series they are pointing at. */\n.brandy-chart__tooltip-value {\n\tfont-weight: 600;\n\tfont-variant-numeric: tabular-nums;\n}\n\n.brandy-chart__tooltip-name {\n\topacity: 0.72;\n}\n\n/* The crosshair for line and area: readers aim at a category, not at a 2px line. */\n.brandy-chart--line,\n.brandy-chart--area {\n\t.brandy-chart__band::before {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\tleft: 50%;\n\t\ttop: 0;\n\t\tbottom: 0;\n\t\twidth: 1px;\n\t\tbackground: var(--chart-axis);\n\t\topacity: 0;\n\t\ttransition: opacity 0.12s ease;\n\t}\n\n\t&.has-tooltip .brandy-chart__band:hover::before,\n\t&.has-tooltip .brandy-chart__band:focus::before {\n\t\topacity: 1;\n\t}\n}\n\n/*\n * The reveal.\n *\n * No `fill-mode`. The finished geometry is what the rules above describe, so a\n * chart whose animation never runs — reduced motion, a background tab that\n * refuses to tick animations, no JavaScript — is already at its true size. The\n * animation is never allowed to own the value.\n */\n@keyframes brandy-chart-grow-up {\n\tfrom {\n\t\ttransform: translateX(-50%) scaleY(0);\n\t}\n}\n\n@keyframes brandy-chart-grow-across {\n\tfrom {\n\t\ttransform: translateY(-50%) scaleX(0);\n\t}\n}\n\n@keyframes brandy-chart-wipe {\n\tfrom {\n\t\tclip-path: inset(0 100% 0 0);\n\t}\n}\n\n@keyframes brandy-chart-fade-in {\n\tfrom {\n\t\topacity: 0;\n\t}\n}\n\n@keyframes brandy-chart-pop {\n\tfrom {\n\t\ttransform: scale(0.92);\n\t\topacity: 0;\n\t}\n}\n\n.is-revealing {\n\t&.brandy-chart--vertical .brandy-chart__bar {\n\t\ttransform-origin: bottom;\n\t\tanimation: brandy-chart-grow-up 620ms cubic-bezier(0.22, 1, 0.36, 1);\n\t\tanimation-delay: calc(var(--band-index, 0) * 45ms);\n\t}\n\n\t&.brandy-chart--horizontal .brandy-chart__bar {\n\t\ttransform-origin: left;\n\t\tanimation: brandy-chart-grow-across 620ms cubic-bezier(0.22, 1, 0.36, 1);\n\t\tanimation-delay: calc(var(--band-index, 0) * 45ms);\n\t}\n\n\t.brandy-chart__marks {\n\t\tanimation: brandy-chart-wipe 900ms cubic-bezier(0.22, 1, 0.36, 1);\n\t}\n\n\t.brandy-chart__radial {\n\t\ttransform-origin: center;\n\t\tanimation: brandy-chart-pop 520ms cubic-bezier(0.22, 1, 0.36, 1);\n\t}\n\n\t.brandy-chart__bar-label,\n\t.brandy-chart__point-label,\n\t.brandy-chart__slice-label {\n\t\tanimation: brandy-chart-fade-in 500ms ease-out;\n\t\tanimation-delay: 420ms;\n\t}\n}\n\n/*\n * The view module already declines to start the reveal under reduced motion;\n * this is the belt to that braces, and it also covers a stale `is-revealing`\n * class arriving from cached markup.\n */\n@media (prefers-reduced-motion: reduce) {\n\t.is-revealing,\n\t.is-revealing * {\n\t\tanimation: none !important;\n\t}\n}\n"],"names":[],"sourceRoot":""}