@bendyline/squisq 2.11.8 → 2.11.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1581,6 +1581,17 @@ interface ProgressIndicatorConfig {
1581
1581
  */
1582
1582
  declare const PAGE_SECTION_KINDS: readonly ["hero", "banner", "stat-band", "quote-band", "feature-split", "media-figure", "gallery", "callout", "card-grid", "item-list", "timeline-rail", "table-section", "canvas-embed", "prose", "footer"];
1583
1583
  type PageSectionKind = (typeof PAGE_SECTION_KINDS)[number];
1584
+ /**
1585
+ * How a page rendition reads. `page` (the default) is the art-directed
1586
+ * scrolling site: a centered cover hero, display type, section bands, and
1587
+ * content-aware templates. `document` is the working-document register for
1588
+ * reports, notes, and previews: a left-aligned masthead, one heading scale
1589
+ * that follows the markdown hierarchy whatever section carries it, one flat
1590
+ * surface, and markdown structure kept as written — auto-picked templates
1591
+ * render as prose, while authored `{[template]}` annotations still apply.
1592
+ */
1593
+ declare const PAGE_VARIANTS: readonly ["page", "document"];
1594
+ type PageVariant = (typeof PAGE_VARIANTS)[number];
1584
1595
  /** Relative visual weight of a section within the page. */
1585
1596
  type PageEmphasis = 'lead' | 'strong' | 'standard' | 'quiet';
1586
1597
  /** Which background treatment a section sits on. */
@@ -3054,4 +3065,4 @@ declare function getBlockAtTime(blocks: Block[], time: number): Block | null;
3054
3065
  */
3055
3066
  declare function getCaptionAtTime(captions: CaptionTrack | undefined, time: number): CaptionPhrase | null;
3056
3067
 
3057
- export { type ImageLayer as $, type AccentImage as A, type BarChartInput as B, type CaptionPhrase as C, DARK_SURFACE as D, DEFAULT_DOC_FONT as E, DEFAULT_TITLE_FONT as F, type DataTableInput as G, type DateEventInput as H, type DeepPartial as I, type DefinitionCardInput as J, type DiagramBlockInput as K, type DiagramEdgeAnchor as L, type DiagramTemplateEdge as M, type DiagramTemplateNode as N, type Doc as O, type DocBlock as P, type DocDiagnostic as Q, type DonutChartInput as R, type DrawingBlockInput as S, FRONTMATTER_CUSTOM_TEMPLATES_KEY as T, FRONTMATTER_CUSTOM_THEMES_KEY as U, type FactCardInput as V, type FontFamily as W, type FontFamilyKind as X, type FullBleedQuoteInput as Y, type GradientBackgroundConfig as Z, type ImageBackgroundConfig as _, type AccentPosition as a, type RenderStyle as a$, type ImageTreatment as a0, type ImageWithCaptionInput as a1, LIGHT_SURFACE as a2, type Layer as a3, type LayerRepeat as a4, type LayoutHints as a5, type LeftFeatureInput as a6, type LineChartInput as a7, type LinearGradient as a8, type ListBlockInput as a9, PAGE_SECTION_KINDS as aA, PAGE_SECTION_SPACINGS as aB, PAGE_SHADOWS as aC, type PageAccentRotation as aD, type PageBackground as aE, type PageDesignFamily as aF, type PageEmphasis as aG, type PageHeadingTreatment as aH, type PageSectionKind as aI, type PageSectionOverride as aJ, type PageTokens as aK, type PathLayer as aL, type PatternBackgroundConfig as aM, type PersistentLayer as aN, type PersistentLayerConfig as aO, type PersistentLayerTemplate as aP, type PersistentLayerTemplateConfig as aQ, type PersistentLayerTemplateType as aR, type PhotoGridInput as aS, type PieChartInput as aT, type PipStyle as aU, type Position as aV, type ProgressIndicatorConfig as aW, type PromotedBodyAnnotation as aX, type PullQuoteInput as aY, type QuoteBlockInput as aZ, type RawLayersInput as a_, type MapBlockInput as aa, type MapLayer as ab, type MapMarker as ac, type MapTileStyle as ad, type MarkerStyle as ae, type MediaClip as af, type MediaCrop as ag, type MediaCut as ah, type MediaEdits as ai, type MediaScheduleOptions as aj, type MermaidLayer as ak, PAGE_ACCENT_STRATEGIES as al, PAGE_BACKGROUNDS as am, PAGE_BACKGROUND_RHYTHMS as an, PAGE_DESIGN_FAMILIES as ao, PAGE_DIVIDERS as ap, PAGE_EMPHASES as aq, PAGE_EYEBROWS as ar, PAGE_HEADING_CASES as as, PAGE_HEADING_SCALES as at, PAGE_HEADING_UNDERLINES as au, PAGE_HERO_STYLES as av, PAGE_IMAGE_FRAMINGS as aw, PAGE_NUMERAL_STYLES as ax, PAGE_PATTERNS as ay, PAGE_QUOTE_MARKS as az, type AmbientGradientConfig as b, getCaptionAtTime as b$, type RightFeatureInput as b0, type ScatterChartInput as b1, type ScheduledClip as b2, type SectionHeaderInput as b3, type ShapeFilter as b4, type ShapeLayer as b5, type ShapePattern as b6, type SolidBackgroundConfig as b7, type StartBlockConfig as b8, type StatHighlightInput as b9, type TreeBlockInput as bA, type TreeLayer as bB, type TreeLayerItem as bC, type TreeLayerStyle as bD, type TreeTemplateItem as bE, type TwoColumnInput as bF, VIEWPORT_PRESETS as bG, type VideoLayer as bH, type VideoPipPosition as bI, type VideoPipShape as bJ, type VideoPipSize as bK, type VideoPlacement as bL, type VideoPresentation as bM, type VideoPullQuoteInput as bN, type VideoWithCaptionInput as bO, type ViewportConfig as bP, type ViewportOrientation as bQ, type ViewportPreset as bR, type VignetteConfig as bS, applySurface as bT, calculateDuration as bU, calculateFontScale as bV, createTemplateContext as bW, createTheme as bX, createThemeRegistry as bY, getAspectRatioString as bZ, getBlockAtTime as b_, type SurfaceScheme as ba, THEME_SCHEMA_VERSION as bb, type TableLayer as bc, type TableLayerStyle as bd, type TemplateBlock as be, type TemplateContext as bf, type TemplateFunction as bg, type TemplateRegistry as bh, type TextLayer as bi, type TextStyle as bj, type Theme as bk, type ThemeColorPalette as bl, type ThemeColorScheme as bm, type ThemePageStyle as bn, type ThemeRegistry as bo, type ThemeSchemaVersion as bp, type ThemeSeedColors as bq, type ThemeStyle as br, type ThemeTypography as bs, type TimelineBlockInput as bt, type TimelineTemplateEvent as bu, type TimelineTemplateLink as bv, type TimelineTemplateTrack as bw, type TitleBlockInput as bx, type TitleCaptionConfig as by, type TranscriptBlockInput as bz, type Animation as c, getDocPlaybackDuration as c0, getLayoutHints as c1, getSafeTextBounds as c2, getSegmentAtTime as c3, getTwoColumnPositions as c4, getViewport as c5, getViewportOrientation as c6, isCustomTemplateDefinition as c7, isPersistentLayerTemplate as c8, isTemplateBlock as c9, serializeMediaCuts as cA, serializeMediaEdits as cB, serializeMediaFx as cC, scaledFontSize$1 as ca, resolveMediaSchedule as cb, scaledFontSize as cc, scheduleMediaClip as cd, validateCustomTemplateDefinition as ce, type MediaFxOpId as cf, type MediaFxChain as cg, MEDIA_EDIT_PARAMS as ch, MEDIA_FX_ORDER as ci, MEDIA_FX_SPECS as cj, type MediaEditParamKey as ck, type MediaEditParamValues as cl, type MediaFxOp as cm, formatMediaNumber as cn, hasRenderableFx as co, mediaEditHtmlAttribute as cp, mediaEditValuesFromAttributes as cq, mediaEditValuesFromParams as cr, mediaRenderKey as cs, normalizeMediaCrop as ct, normalizeMediaCuts as cu, parseMediaCrop as cv, parseMediaCuts as cw, parseMediaEdits as cx, parseMediaFx as cy, serializeMediaCrop as cz, type AnimationType as d, type AreaChartInput as e, type AudioBookmark as f, type AudioSegment as g, type AudioTimingData as h, type AudioTrack as i, type BigTextInput as j, type Block as k, type BlockConnection as l, type BorderStyle as m, type CaptionTrack as n, type CaptionWord as o, type ChartBaseFields as p, type ChartTemplateInput as q, type ColorScheme as r, type ColumnChartInput as s, type ComparisonBarInput as t, type ContentBlockInput as u, type CornerBrandingConfig as v, type CustomTemplateDefinition as w, type CustomTemplateLayer as x, type CustomTemplateValidationError as y, type CustomTemplateValidationResult as z };
3068
+ export { type ImageLayer as $, type AccentImage as A, type BarChartInput as B, type CaptionPhrase as C, DARK_SURFACE as D, DEFAULT_DOC_FONT as E, DEFAULT_TITLE_FONT as F, type DataTableInput as G, type DateEventInput as H, type DeepPartial as I, type DefinitionCardInput as J, type DiagramBlockInput as K, type DiagramEdgeAnchor as L, type DiagramTemplateEdge as M, type DiagramTemplateNode as N, type Doc as O, type DocBlock as P, type DocDiagnostic as Q, type DonutChartInput as R, type DrawingBlockInput as S, FRONTMATTER_CUSTOM_TEMPLATES_KEY as T, FRONTMATTER_CUSTOM_THEMES_KEY as U, type FactCardInput as V, type FontFamily as W, type FontFamilyKind as X, type FullBleedQuoteInput as Y, type GradientBackgroundConfig as Z, type ImageBackgroundConfig as _, type AccentPosition as a, type QuoteBlockInput as a$, type ImageTreatment as a0, type ImageWithCaptionInput as a1, LIGHT_SURFACE as a2, type Layer as a3, type LayerRepeat as a4, type LayoutHints as a5, type LeftFeatureInput as a6, type LineChartInput as a7, type LinearGradient as a8, type ListBlockInput as a9, PAGE_SECTION_KINDS as aA, PAGE_SECTION_SPACINGS as aB, PAGE_SHADOWS as aC, PAGE_VARIANTS as aD, type PageAccentRotation as aE, type PageBackground as aF, type PageDesignFamily as aG, type PageEmphasis as aH, type PageHeadingTreatment as aI, type PageSectionKind as aJ, type PageSectionOverride as aK, type PageTokens as aL, type PageVariant as aM, type PathLayer as aN, type PatternBackgroundConfig as aO, type PersistentLayer as aP, type PersistentLayerConfig as aQ, type PersistentLayerTemplate as aR, type PersistentLayerTemplateConfig as aS, type PersistentLayerTemplateType as aT, type PhotoGridInput as aU, type PieChartInput as aV, type PipStyle as aW, type Position as aX, type ProgressIndicatorConfig as aY, type PromotedBodyAnnotation as aZ, type PullQuoteInput as a_, type MapBlockInput as aa, type MapLayer as ab, type MapMarker as ac, type MapTileStyle as ad, type MarkerStyle as ae, type MediaClip as af, type MediaCrop as ag, type MediaCut as ah, type MediaEdits as ai, type MediaScheduleOptions as aj, type MermaidLayer as ak, PAGE_ACCENT_STRATEGIES as al, PAGE_BACKGROUNDS as am, PAGE_BACKGROUND_RHYTHMS as an, PAGE_DESIGN_FAMILIES as ao, PAGE_DIVIDERS as ap, PAGE_EMPHASES as aq, PAGE_EYEBROWS as ar, PAGE_HEADING_CASES as as, PAGE_HEADING_SCALES as at, PAGE_HEADING_UNDERLINES as au, PAGE_HERO_STYLES as av, PAGE_IMAGE_FRAMINGS as aw, PAGE_NUMERAL_STYLES as ax, PAGE_PATTERNS as ay, PAGE_QUOTE_MARKS as az, type AmbientGradientConfig as b, getAspectRatioString as b$, type RawLayersInput as b0, type RenderStyle as b1, type RightFeatureInput as b2, type ScatterChartInput as b3, type ScheduledClip as b4, type SectionHeaderInput as b5, type ShapeFilter as b6, type ShapeLayer as b7, type ShapePattern as b8, type SolidBackgroundConfig as b9, type TitleCaptionConfig as bA, type TranscriptBlockInput as bB, type TreeBlockInput as bC, type TreeLayer as bD, type TreeLayerItem as bE, type TreeLayerStyle as bF, type TreeTemplateItem as bG, type TwoColumnInput as bH, VIEWPORT_PRESETS as bI, type VideoLayer as bJ, type VideoPipPosition as bK, type VideoPipShape as bL, type VideoPipSize as bM, type VideoPlacement as bN, type VideoPresentation as bO, type VideoPullQuoteInput as bP, type VideoWithCaptionInput as bQ, type ViewportConfig as bR, type ViewportOrientation as bS, type ViewportPreset as bT, type VignetteConfig as bU, applySurface as bV, calculateDuration as bW, calculateFontScale as bX, createTemplateContext as bY, createTheme as bZ, createThemeRegistry as b_, type StartBlockConfig as ba, type StatHighlightInput as bb, type SurfaceScheme as bc, THEME_SCHEMA_VERSION as bd, type TableLayer as be, type TableLayerStyle as bf, type TemplateBlock as bg, type TemplateContext as bh, type TemplateFunction as bi, type TemplateRegistry as bj, type TextLayer as bk, type TextStyle as bl, type Theme as bm, type ThemeColorPalette as bn, type ThemeColorScheme as bo, type ThemePageStyle as bp, type ThemeRegistry as bq, type ThemeSchemaVersion as br, type ThemeSeedColors as bs, type ThemeStyle as bt, type ThemeTypography as bu, type TimelineBlockInput as bv, type TimelineTemplateEvent as bw, type TimelineTemplateLink as bx, type TimelineTemplateTrack as by, type TitleBlockInput as bz, type Animation as c, getBlockAtTime as c0, getCaptionAtTime as c1, getDocPlaybackDuration as c2, getLayoutHints as c3, getSafeTextBounds as c4, getSegmentAtTime as c5, getTwoColumnPositions as c6, getViewport as c7, getViewportOrientation as c8, isCustomTemplateDefinition as c9, parseMediaFx as cA, serializeMediaCrop as cB, serializeMediaCuts as cC, serializeMediaEdits as cD, serializeMediaFx as cE, isPersistentLayerTemplate as ca, isTemplateBlock as cb, scaledFontSize$1 as cc, resolveMediaSchedule as cd, scaledFontSize as ce, scheduleMediaClip as cf, validateCustomTemplateDefinition as cg, type MediaFxOpId as ch, type MediaFxChain as ci, MEDIA_EDIT_PARAMS as cj, MEDIA_FX_ORDER as ck, MEDIA_FX_SPECS as cl, type MediaEditParamKey as cm, type MediaEditParamValues as cn, type MediaFxOp as co, formatMediaNumber as cp, hasRenderableFx as cq, mediaEditHtmlAttribute as cr, mediaEditValuesFromAttributes as cs, mediaEditValuesFromParams as ct, mediaRenderKey as cu, normalizeMediaCrop as cv, normalizeMediaCuts as cw, parseMediaCrop as cx, parseMediaCuts as cy, parseMediaEdits as cz, type AnimationType as d, type AreaChartInput as e, type AudioBookmark as f, type AudioSegment as g, type AudioTimingData as h, type AudioTrack as i, type BigTextInput as j, type Block as k, type BlockConnection as l, type BorderStyle as m, type CaptionTrack as n, type CaptionWord as o, type ChartBaseFields as p, type ChartTemplateInput as q, type ColorScheme as r, type ColumnChartInput as s, type ComparisonBarInput as t, type ContentBlockInput as u, type CornerBrandingConfig as v, type CustomTemplateDefinition as w, type CustomTemplateLayer as x, type CustomTemplateValidationError as y, type CustomTemplateValidationResult as z };
@@ -1,4 +1,4 @@
1
- import { $ as ImageLayer, bi as TextLayer, b5 as ShapeLayer, aL as PathLayer } from './Doc-CynsGqL4.js';
1
+ import { $ as ImageLayer, bk as TextLayer, b7 as ShapeLayer, aN as PathLayer } from './Doc-DmElSKmg.js';
2
2
 
3
3
  /**
4
4
  * ImageEditDoc — JSON document describing a layered, editable image.
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  flattenRenderableBlocks,
3
3
  getBlockBodyText
4
- } from "./chunk-RMCUZDW5.js";
4
+ } from "./chunk-QOVINAB2.js";
5
5
  import {
6
6
  estimateSpokenWordCount
7
7
  } from "./chunk-GHOPHGOK.js";
@@ -15,7 +15,7 @@ import {
15
15
  relativeLuminance,
16
16
  resolveFontFamily,
17
17
  withAlpha
18
- } from "./chunk-Y4D6TDZT.js";
18
+ } from "./chunk-PCCQLD3G.js";
19
19
 
20
20
  // src/schemas/Doc.ts
21
21
  function calculateDuration(audio) {
@@ -5,11 +5,11 @@ import {
5
5
  } from "./chunk-SVN7T6BK.js";
6
6
  import {
7
7
  markdownToDoc
8
- } from "./chunk-RMCUZDW5.js";
8
+ } from "./chunk-QOVINAB2.js";
9
9
  import {
10
10
  cloneAndFreezeData,
11
11
  isTemplateBlock
12
- } from "./chunk-Y4D6TDZT.js";
12
+ } from "./chunk-PCCQLD3G.js";
13
13
  import {
14
14
  parseMarkdown
15
15
  } from "./chunk-HUXK7EOT.js";
@@ -2,7 +2,7 @@ import {
2
2
  DEFAULT_THEME,
3
3
  applySurface,
4
4
  resolveFontFamily
5
- } from "./chunk-Y4D6TDZT.js";
5
+ } from "./chunk-PCCQLD3G.js";
6
6
 
7
7
  // src/jsonForm/chooseControl.ts
8
8
  var ENUM_SEGMENTED_LIMIT = 4;
@@ -725,6 +725,7 @@ var PAGE_SECTION_KINDS = [
725
725
  "prose",
726
726
  "footer"
727
727
  ];
728
+ var PAGE_VARIANTS = ["page", "document"];
728
729
  var PAGE_DESIGN_FAMILIES = [
729
730
  "clean",
730
731
  "editorial",
@@ -2994,6 +2995,7 @@ export {
2994
2995
  pickContrastingText,
2995
2996
  deriveScale,
2996
2997
  PAGE_SECTION_KINDS,
2998
+ PAGE_VARIANTS,
2997
2999
  PAGE_DESIGN_FAMILIES,
2998
3000
  PAGE_SECTION_SPACINGS,
2999
3001
  PAGE_DIVIDERS,
@@ -7,10 +7,10 @@ import {
7
7
  buildNarrationScript,
8
8
  expectedSyllablesAt,
9
9
  wordPosAtExpectedSyllables
10
- } from "./chunk-ZEONJCP3.js";
10
+ } from "./chunk-2PGC4JDT.js";
11
11
  import {
12
12
  flattenRenderableBlocks
13
- } from "./chunk-RMCUZDW5.js";
13
+ } from "./chunk-QOVINAB2.js";
14
14
 
15
15
  // src/narration/types.ts
16
16
  var DEFAULT_FEATURE_CONFIG = Object.freeze({
@@ -41,7 +41,7 @@ import {
41
41
  validateCustomTemplateDefinition,
42
42
  validateTheme,
43
43
  withAlpha
44
- } from "./chunk-Y4D6TDZT.js";
44
+ } from "./chunk-PCCQLD3G.js";
45
45
  import {
46
46
  mediaEditValuesFromAttributes,
47
47
  mediaEditValuesFromParams,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  buildNarrationScript,
3
3
  parseNarrationTimingJson
4
- } from "./chunk-ZEONJCP3.js";
4
+ } from "./chunk-2PGC4JDT.js";
5
5
  import {
6
6
  SHAPE_NAMES,
7
7
  buildChartData,
@@ -32,7 +32,7 @@ import {
32
32
  templateRegistry,
33
33
  writeCustomTemplatesToFrontmatter,
34
34
  writeCustomThemesToFrontmatter
35
- } from "./chunk-RMCUZDW5.js";
35
+ } from "./chunk-QOVINAB2.js";
36
36
  import {
37
37
  ASCII_TREE_VOCAB,
38
38
  ASCII_VOCAB,
@@ -73,7 +73,7 @@ import {
73
73
  resolveFontFamily,
74
74
  resolveTheme,
75
75
  withAlpha
76
- } from "./chunk-Y4D6TDZT.js";
76
+ } from "./chunk-PCCQLD3G.js";
77
77
  import {
78
78
  createMediaTimeMap
79
79
  } from "./chunk-JSGIWW35.js";
@@ -1472,10 +1472,42 @@ var sectionExtractors = {
1472
1472
  };
1473
1473
 
1474
1474
  // src/doc/page/materializePageSection.ts
1475
- function resolvePageStyle(theme, hints) {
1475
+ function resolvePageStyle(theme, hints, variant = "page") {
1476
1476
  const base = theme?.pageStyle ?? defaultPageStyle(theme ?? DEFAULT_THEME);
1477
- if (!hints?.spacing || hints.spacing === base.tokens.sectionSpacing) return base;
1478
- return { ...base, tokens: { ...base.tokens, sectionSpacing: hints.spacing } };
1477
+ const spaced = !hints?.spacing || hints.spacing === base.tokens.sectionSpacing ? base : { ...base, tokens: { ...base.tokens, sectionSpacing: hints.spacing } };
1478
+ return variant === "document" ? documentPageStyle(spaced) : spaced;
1479
+ }
1480
+ function withoutBackgrounds(overrides) {
1481
+ const out = {};
1482
+ for (const [key, override] of Object.entries(overrides)) {
1483
+ if (!override) continue;
1484
+ const { background: _background, ...rest } = override;
1485
+ out[key] = rest;
1486
+ }
1487
+ return out;
1488
+ }
1489
+ function documentPageStyle(style) {
1490
+ return {
1491
+ family: style.family,
1492
+ tokens: {
1493
+ ...style.tokens,
1494
+ cornerRadius: Math.min(style.tokens.cornerRadius, 6),
1495
+ sectionSpacing: "compact",
1496
+ divider: "none",
1497
+ backgroundRhythm: "flat",
1498
+ headingTreatment: { eyebrow: "kicker", scale: "regular", case: "none", underline: "none" },
1499
+ shadow: "none",
1500
+ quoteMark: "accent-bar",
1501
+ numeralStyle: "plain",
1502
+ pattern: "none"
1503
+ },
1504
+ ...style.sections ? { sections: withoutBackgrounds(style.sections) } : {},
1505
+ ...style.templates ? { templates: withoutBackgrounds(style.templates) } : {},
1506
+ accentRotation: { strategy: "primary-only" }
1507
+ };
1508
+ }
1509
+ function isAutoPickedOnly(block) {
1510
+ return block.autoTemplate === true && !block.sourceHeading?.templateAnnotation?.template && !block.promotedBodyAnnotation;
1479
1511
  }
1480
1512
  var ACCENT_KINDS = /* @__PURE__ */ new Set([
1481
1513
  "banner",
@@ -1547,8 +1579,9 @@ function preserveRichContent(block, draft, widgetFenceLangs) {
1547
1579
  const richContent = unconsumedRichContent(block, draft, widgetFenceLangs);
1548
1580
  return richContent ? { ...draft, slots: { ...draft.slots, richContent } } : draft;
1549
1581
  }
1550
- function draftForBlock(block, viewport, customTemplates, widgetFenceLangs) {
1551
- if (isTemplatedPageBlock(block)) {
1582
+ function draftForBlock(block, viewport, customTemplates, widgetFenceLangs, variant = "page") {
1583
+ const autoPickedInDocument = variant === "document" && isAutoPickedOnly(block);
1584
+ if (isTemplatedPageBlock(block) && !autoPickedInDocument) {
1552
1585
  const resolved = resolvePageBlock(block);
1553
1586
  const templateName = resolved.templateName;
1554
1587
  const extractor = sectionExtractors[templateName];
@@ -1684,8 +1717,14 @@ function rotationSchemeNames(pageStyle, theme) {
1684
1717
  function materializePageSection(block, options = {}) {
1685
1718
  const theme = options.theme ?? DEFAULT_THEME;
1686
1719
  const viewport = options.viewport ?? VIEWPORT_PRESETS.landscape;
1687
- const pageStyle = resolvePageStyle(theme);
1688
- const result = draftForBlock(block, viewport, options.customTemplates, options.widgetFenceLangs);
1720
+ const pageStyle = resolvePageStyle(theme, void 0, options.variant);
1721
+ const result = draftForBlock(
1722
+ block,
1723
+ viewport,
1724
+ options.customTemplates,
1725
+ options.widgetFenceLangs,
1726
+ options.variant
1727
+ );
1689
1728
  const override = overrideFor(pageStyle, result.draft.kind, result.templateName);
1690
1729
  const background = override?.background ?? (result.draft.mediaBackground ? "media" : "base");
1691
1730
  const emphasis = override?.emphasis ?? result.draft.emphasis ?? "standard";
@@ -1709,14 +1748,39 @@ function materializePageSection(block, options = {}) {
1709
1748
  diagnostic: result.diagnostic
1710
1749
  };
1711
1750
  }
1751
+ function dedupeDocumentMasthead(seeds) {
1752
+ const cover = seeds[0];
1753
+ const first = seeds[1];
1754
+ const slots = { ...first.draft.slots };
1755
+ if ((slots.headingLevel ?? 1) > 1) {
1756
+ seeds.splice(0, 1);
1757
+ return;
1758
+ }
1759
+ const markdown = slots.body?.markdown;
1760
+ const lead = markdown?.[0];
1761
+ const subtitle = cover.draft.slots.subtitle;
1762
+ if (subtitle && lead?.type === "paragraph" && extractPlainText(lead) === subtitle) {
1763
+ const { subtitle: _mirrored, ...coverSlots } = cover.draft.slots;
1764
+ cover.draft = { ...cover.draft, slots: coverSlots };
1765
+ }
1766
+ delete slots.title;
1767
+ delete slots.headingLevel;
1768
+ if (markdown && markdown.length > 0) {
1769
+ first.draft = { ...first.draft, slots };
1770
+ } else {
1771
+ seeds.splice(1, 1);
1772
+ }
1773
+ }
1712
1774
  function materializePageSections(doc, options = {}) {
1713
1775
  const theme = options.theme ?? DEFAULT_THEME;
1714
1776
  const viewport = options.viewport ?? VIEWPORT_PRESETS.landscape;
1715
- const pageStyle = resolvePageStyle(theme, options.transformPage);
1777
+ const variant = options.variant ?? "page";
1778
+ const pageStyle = resolvePageStyle(theme, options.transformPage, variant);
1716
1779
  const customTemplates = options.customTemplates ?? doc.customTemplates;
1717
1780
  const seeds = [];
1718
1781
  if (options.cover) {
1719
1782
  const cover = options.cover;
1783
+ const heroSrc = variant === "document" ? void 0 : cover.heroSrc;
1720
1784
  seeds.push({
1721
1785
  draft: {
1722
1786
  kind: "hero",
@@ -1724,16 +1788,16 @@ function materializePageSections(doc, options = {}) {
1724
1788
  slots: {
1725
1789
  title: cover.title,
1726
1790
  subtitle: cover.subtitle,
1727
- media: cover.heroSrc ? {
1791
+ media: heroSrc ? {
1728
1792
  type: "image",
1729
- src: cover.heroSrc,
1793
+ src: heroSrc,
1730
1794
  alt: cover.heroAlt ?? "",
1731
1795
  credit: cover.heroCredit,
1732
1796
  license: cover.heroLicense
1733
1797
  } : void 0
1734
1798
  },
1735
1799
  emphasis: "lead",
1736
- mediaBackground: !!cover.heroSrc
1800
+ mediaBackground: !!heroSrc
1737
1801
  },
1738
1802
  source: "cover",
1739
1803
  depth: 0
@@ -1741,7 +1805,13 @@ function materializePageSections(doc, options = {}) {
1741
1805
  }
1742
1806
  const walk = (blocks, depth) => {
1743
1807
  for (const block of blocks) {
1744
- const result = draftForBlock(block, viewport, customTemplates, options.widgetFenceLangs);
1808
+ const result = draftForBlock(
1809
+ block,
1810
+ viewport,
1811
+ customTemplates,
1812
+ options.widgetFenceLangs,
1813
+ variant
1814
+ );
1745
1815
  seeds.push({ ...result, block, depth });
1746
1816
  const consumed = result.draft.kind === "canvas-embed" && isContainerTemplate(result.templateName);
1747
1817
  if (!consumed && block.children && block.children.length > 0) {
@@ -1764,6 +1834,8 @@ function materializePageSections(doc, options = {}) {
1764
1834
  };
1765
1835
  }
1766
1836
  seeds.splice(0, 1);
1837
+ } else if (variant === "document" && first.draft.kind === "prose" && first.draft.slots.title === cover.title) {
1838
+ dedupeDocumentMasthead(seeds);
1767
1839
  } else if (first.draft.kind === "prose" && first.draft.slots.title === cover.title) {
1768
1840
  const slots = { ...first.draft.slots };
1769
1841
  delete slots.title;
@@ -1921,6 +1993,7 @@ var NARROW_RULES = `
1921
1993
  .squisq-page-feature { grid-template-columns: 1fr; }
1922
1994
  .squisq-page-feature--media-right .squisq-page-feature-media { order: 0; }
1923
1995
  .squisq-page-stats { flex-direction: column; gap: 1.75rem; }
1996
+ .squisq-page-stats > .squisq-page-stat { flex: 0 0 auto; max-width: none; }
1924
1997
  .squisq-page-cards { grid-template-columns: 1fr; }
1925
1998
  .squisq-page-gallery { grid-template-columns: repeat(2, 1fr); }
1926
1999
  .squisq-page-milestone { grid-template-columns: 1fr; gap: 0.5rem; }
@@ -2288,10 +2361,14 @@ var PAGE_BASE_CSS = `
2288
2361
  font-size: 1.15em;
2289
2362
  }
2290
2363
  /* Item bodies are rendered markdown: neutralize UA paragraph margins (which
2291
- would otherwise push the first line below the marker) and space blocks. */
2364
+ would otherwise push the first line below the marker) and space blocks.
2365
+ MarkdownRenderer wraps its blocks in a .squisq-md div, so the paragraphs
2366
+ are grandchildren. */
2292
2367
  .squisq-page-item-body { min-width: 0; }
2293
- .squisq-page-item-body > * { margin: 0; }
2294
- .squisq-page-item-body > * + * { margin-top: 0.6em; }
2368
+ .squisq-page-item-body > *,
2369
+ .squisq-page-item-body > .squisq-md > * { margin: 0; }
2370
+ .squisq-page-item-body > * + *,
2371
+ .squisq-page-item-body > .squisq-md > * + * { margin-top: 0.6em; }
2295
2372
  .squisq-page[data-numerals='mono'] .squisq-page-items li::before { font-family: var(--squisq-page-mono-font); }
2296
2373
  .squisq-page-items-title { font-size: 1.9rem; }
2297
2374
 
@@ -2439,6 +2516,127 @@ var PAGE_BASE_CSS = `
2439
2516
  .squisq-page--thumbnail-images .squisq-page-prose img,
2440
2517
  .squisq-page--thumbnail-images .squisq-page-figure img { max-width: 100px; max-height: 100px; object-fit: cover; }
2441
2518
 
2519
+ /* \u2500\u2500 Document variant \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
2520
+ /* The working-document register (reports, notes, previews). Sizes are in em
2521
+ * so one host font-size scales the whole page, and a section's title is
2522
+ * sized by its markdown heading level (data-heading-level), never by which
2523
+ * section kind happens to carry it. Rules that must beat a page rule keyed
2524
+ * on a token attribute repeat .squisq-page for specificity. */
2525
+ .squisq-page--document { --squisq-page-divider-color: color-mix(in srgb, var(--squisq-page-text) 14%, transparent); }
2526
+ .squisq-page--document .squisq-page-section { padding-block: 0.4em; }
2527
+ .squisq-page--document .squisq-page-section .squisq-page-section-inner { max-width: var(--squisq-page-content-max); }
2528
+ .squisq-page--document > .squisq-page-section:is([data-heading-level='3'], [data-heading-level='4'], [data-heading-level='5'], [data-heading-level='6']) { padding-top: 1em; }
2529
+ /* A top-level heading opens with a hairline set in the text column, like the
2530
+ * masthead's, rather than a full-bleed section border. */
2531
+ .squisq-page.squisq-page--document > .squisq-page-section:is([data-heading-level='1'], [data-heading-level='2']) { margin-top: 0.8em; }
2532
+ .squisq-page.squisq-page--document > .squisq-page-section:is([data-heading-level='1'], [data-heading-level='2']) > .squisq-page-section-inner::before {
2533
+ content: '';
2534
+ display: block;
2535
+ margin-bottom: 1.1em;
2536
+ border-top: 1px solid var(--squisq-page-divider-color);
2537
+ }
2538
+ .squisq-page.squisq-page--document > .squisq-page-section:first-of-type,
2539
+ .squisq-page.squisq-page--document > .squisq-page-section--hero + .squisq-page-section { margin-top: 0; }
2540
+ .squisq-page.squisq-page--document > .squisq-page-section:first-of-type > .squisq-page-section-inner::before,
2541
+ .squisq-page.squisq-page--document > .squisq-page-section--hero + .squisq-page-section > .squisq-page-section-inner::before { display: none; }
2542
+ .squisq-page--document > .squisq-page-section:first-of-type { padding-top: 1em; }
2543
+ .squisq-page--document > .squisq-page-section:last-of-type { padding-bottom: 1.25em; }
2544
+ /* Thin margins hug the host's container, which supplies the outer inset. */
2545
+ .squisq-page--document.squisq-page--thin > .squisq-page-section:first-of-type { padding-top: 0; }
2546
+ .squisq-page--document.squisq-page--thin > .squisq-page-section:last-of-type { padding-bottom: 0; }
2547
+
2548
+ /* Masthead: the cover as a left-aligned document title over a hairline. */
2549
+ .squisq-page.squisq-page--document .squisq-page-section--hero { padding-block: 1em 0.6em; }
2550
+ .squisq-page.squisq-page--document .squisq-page-hero-body {
2551
+ text-align: left;
2552
+ padding-bottom: 0.55em;
2553
+ border-bottom: 1px solid var(--squisq-page-divider-color);
2554
+ }
2555
+ .squisq-page.squisq-page--document .squisq-page-hero-title { font-size: 1.6em; line-height: 1.2; letter-spacing: normal; text-transform: none; }
2556
+ .squisq-page.squisq-page--document .squisq-page-hero-subtitle { margin: 0.35em 0 0; font-size: 1em; max-width: none; }
2557
+ .squisq-page.squisq-page--document .squisq-page-section--hero-media { min-height: 12em; }
2558
+ .squisq-page.squisq-page--document .squisq-page-section--hero-media .squisq-page-section-inner { padding-block: 1.25em; }
2559
+ .squisq-page.squisq-page--document .squisq-page-section--hero-media .squisq-page-hero-body { border-bottom: none; }
2560
+
2561
+ /* One heading scale for prose headings and typed-section titles alike. */
2562
+ .squisq-page--document .squisq-page-section-title { font-size: 1.3em; line-height: 1.25; margin: 0 0 0.45em; text-align: left; }
2563
+ .squisq-page--document [data-heading-level='1'] .squisq-page-section-title { font-size: 1.6em; }
2564
+ .squisq-page--document [data-heading-level='3'] .squisq-page-section-title { font-size: 1.1em; }
2565
+ .squisq-page--document :is([data-heading-level='4'], [data-heading-level='5'], [data-heading-level='6']) .squisq-page-section-title { font-size: 1em; }
2566
+ .squisq-page--document .squisq-page-prose :is(h1, h2, h3, h4, h5, h6) { line-height: 1.25; margin: 0; }
2567
+ .squisq-page--document .squisq-page-prose h1 { font-size: 1.6em; }
2568
+ .squisq-page--document .squisq-page-prose h2 { font-size: 1.3em; }
2569
+ .squisq-page--document .squisq-page-prose h3 { font-size: 1.1em; }
2570
+ .squisq-page--document .squisq-page-prose :is(h4, h5, h6) { font-size: 1em; }
2571
+ .squisq-page--document .squisq-page-eyebrow { font-size: 0.72em; letter-spacing: 0.1em; margin-bottom: 0.5em; }
2572
+
2573
+ /* Prose */
2574
+ .squisq-page--document .squisq-page-prose { font-size: 1em; }
2575
+ /* A prose section is a heading wrapper then a body wrapper (.squisq-md each). */
2576
+ .squisq-page--document .squisq-page-prose > .squisq-md + .squisq-md { margin-top: 0.4em; }
2577
+ .squisq-page--document .squisq-page-prose > .squisq-md > * + * { margin-top: 0.75em; }
2578
+ .squisq-page--document .squisq-page-prose > .squisq-md > :last-child { margin-bottom: 0; }
2579
+ .squisq-page--document .squisq-page-prose p + p { margin-top: 0.75em; }
2580
+ .squisq-page--document .squisq-page-prose li + li { margin-top: 0.25em; }
2581
+ .squisq-page--document .squisq-page-prose :is(ul, ol) :is(ul, ol) { margin-top: 0.25em; }
2582
+ .squisq-page--document .squisq-page-prose code { font-size: 0.88em; }
2583
+ .squisq-page--document .squisq-page-prose pre { padding: 0.7em 0.9em; }
2584
+ .squisq-page--document .squisq-md-code-frame { margin: 0.75em 0; }
2585
+ .squisq-page--document .squisq-page-prose blockquote { border-left-width: 3px; padding-left: 1em; }
2586
+ .squisq-page--document .squisq-page-prose hr { margin-block: 1.25em; }
2587
+ .squisq-page--document :is(.squisq-page-prose, .squisq-page-table-section) table { font-size: 0.93em; }
2588
+ .squisq-page--document .squisq-page-prose th,
2589
+ .squisq-page--document .squisq-page-table th {
2590
+ font-family: var(--squisq-page-body-font);
2591
+ font-weight: 600;
2592
+ padding: 0.45em 0.7em;
2593
+ }
2594
+ .squisq-page--document .squisq-page-prose td,
2595
+ .squisq-page--document .squisq-page-table td { padding: 0.4em 0.7em; }
2596
+ .squisq-page--document .squisq-page-rich-content { margin-top: 1em; padding-top: 0.75em; }
2597
+
2598
+ /* Typed sections an author asked for, at document scale. */
2599
+ .squisq-page--document .squisq-page-section-inner > :first-child { margin-top: 0; }
2600
+ .squisq-page--document .squisq-page-stats { justify-content: flex-start; text-align: left; gap: 1.5em; }
2601
+ .squisq-page--document .squisq-page-stat { flex: 1 1 10em; }
2602
+ .squisq-page.squisq-page--document .squisq-page-stat-value { font-size: 1.9em; }
2603
+ .squisq-page--document .squisq-page-stat-title { margin-top: 0.35em; font-size: 1em; }
2604
+ .squisq-page--document .squisq-page-stat-body { margin-top: 0.2em; font-size: 0.9em; }
2605
+ .squisq-page--document .squisq-page-stat-meta { margin-top: 0.75em; text-align: left; font-size: 0.85em; }
2606
+ .squisq-page.squisq-page--document .squisq-page-quote { font-size: 1.15em; line-height: 1.45; }
2607
+ .squisq-page.squisq-page--document .squisq-page-quote-figure {
2608
+ border: none;
2609
+ border-left: 3px solid var(--squisq-page-accent);
2610
+ padding: 0 0 0 1em;
2611
+ text-align: left;
2612
+ }
2613
+ .squisq-page--document .squisq-page-quote-attribution { margin-top: 0.6em; font-size: 0.9em; }
2614
+ .squisq-page.squisq-page--document .squisq-page-section--quote-band.squisq-page-section--bg-media { min-height: 10em; }
2615
+ .squisq-page.squisq-page--document .squisq-page-section--banner.squisq-page-section--bg-media { min-height: 9em; }
2616
+ .squisq-page--document .squisq-page-feature { gap: 1.5em; }
2617
+ .squisq-page--document .squisq-page-feature-body { font-size: 1em; }
2618
+ .squisq-page--document .squisq-page-figure figcaption,
2619
+ .squisq-page--document .squisq-page-gallery-caption { margin-top: 0.6em; font-size: 0.85em; }
2620
+ .squisq-page--document .squisq-page-gallery { gap: 0.75em; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); }
2621
+ .squisq-page--document .squisq-page-callout { padding: 0.85em 1.1em; gap: 1em; border-left-width: 3px; }
2622
+ .squisq-page--document .squisq-page-callout-title { font-size: 1.05em; margin-bottom: 0.35em; }
2623
+ .squisq-page--document .squisq-page-callout-meta { margin-top: 0.6em; font-size: 0.82em; }
2624
+ .squisq-page--document .squisq-page-callout .squisq-page-media-frame { flex-basis: 5.5em; }
2625
+ .squisq-page--document .squisq-page-callout .squisq-page-media-frame img { width: 5.5em; height: 5.5em; }
2626
+ .squisq-page--document .squisq-page-cards { gap: 0.9em; grid-template-columns: repeat(auto-fit, minmax(12em, 1fr)); }
2627
+ .squisq-page--document .squisq-page-card { padding: 0.9em 1em 1em; border-top-width: 3px; }
2628
+ .squisq-page--document .squisq-page-card-title { font-size: 1.05em; }
2629
+ .squisq-page--document .squisq-page-cards-title { margin-bottom: 0.6em; }
2630
+ .squisq-page--document .squisq-page-items { max-width: none; }
2631
+ .squisq-page--document .squisq-page-items li { grid-template-columns: 2.2em 1fr; padding: 0.45em 0; font-size: 1em; }
2632
+ .squisq-page--document .squisq-page-items li::before { font-size: 1em; }
2633
+ .squisq-page--document .squisq-page-section--timeline-rail { padding-block: 0.5em; }
2634
+ .squisq-page--document .squisq-page-milestone { grid-template-columns: 7em 1fr; gap: 1.25em; }
2635
+ .squisq-page--document .squisq-page-milestone-date { font-size: 1em; }
2636
+ .squisq-page--document .squisq-page-milestone-rail { left: calc(7em + 0.62em); top: -0.5em; bottom: -0.5em; }
2637
+ .squisq-page--document .squisq-page-milestone-body { padding-left: 1.25em; }
2638
+ .squisq-page--document .squisq-page-milestone-footer { font-size: 0.85em; }
2639
+
2442
2640
  /* \u2500\u2500 Reveal animation (progressive enhancement) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
2443
2641
  @media (prefers-reduced-motion: no-preference) {
2444
2642
  .squisq-page-reveal { opacity: 0; transform: translateY(14px); transition: opacity 0.55s ease, transform 0.55s ease; }
@@ -1,12 +1,12 @@
1
- import { be as TemplateBlock, bf as TemplateContext, a3 as Layer, w as CustomTemplateDefinition, bh as TemplateRegistry, bk as Theme, bP as ViewportConfig, aO as PersistentLayerConfig, P as DocBlock, bQ as ViewportOrientation, aN as PersistentLayer, bx as TitleBlockInput, b3 as SectionHeaderInput, j as BigTextInput, u as ContentBlockInput, b9 as StatHighlightInput, aZ as QuoteBlockInput, V as FactCardInput, bF as TwoColumnInput, H as DateEventInput, a1 as ImageWithCaptionInput, a6 as LeftFeatureInput, b0 as RightFeatureInput, aa as MapBlockInput, b8 as StartBlockConfig, Y as FullBleedQuoteInput, a9 as ListBlockInput, aS as PhotoGridInput, J as DefinitionCardInput, t as ComparisonBarInput, aY as PullQuoteInput, bO as VideoWithCaptionInput, bN as VideoPullQuoteInput, G as DataTableInput, K as DiagramBlockInput, bA as TreeBlockInput, bt as TimelineBlockInput, k as Block, S as DrawingBlockInput, ae as MarkerStyle, A as AccentImage, a0 as ImageTreatment, a as AccentPosition, c as Animation, d as AnimationType, bm as ThemeColorScheme, O as Doc, bo as ThemeRegistry, aG as PageEmphasis, bn as ThemePageStyle, Q as DocDiagnostic, N as DiagramTemplateNode, M as DiagramTemplateEdge, bw as TimelineTemplateTrack, bv as TimelineTemplateLink } from '../Doc-CynsGqL4.js';
2
- export { T as FRONTMATTER_CUSTOM_TEMPLATES_KEY, U as FRONTMATTER_CUSTOM_THEMES_KEY, a5 as LayoutHints, a$ as RenderStyle, bl as ThemeColorPalette, br as ThemeStyle, bs as ThemeTypography, bG as VIEWPORT_PRESETS, bR as ViewportPreset, bW as createTemplateContext, c1 as getLayoutHints, c4 as getTwoColumnPositions, c5 as getViewport, c6 as getViewportOrientation, c9 as isTemplateBlock, cc as scaledFontSize } from '../Doc-CynsGqL4.js';
1
+ import { bg as TemplateBlock, bh as TemplateContext, a3 as Layer, w as CustomTemplateDefinition, bj as TemplateRegistry, bm as Theme, bR as ViewportConfig, aQ as PersistentLayerConfig, P as DocBlock, bS as ViewportOrientation, aP as PersistentLayer, bz as TitleBlockInput, b5 as SectionHeaderInput, j as BigTextInput, u as ContentBlockInput, bb as StatHighlightInput, a$ as QuoteBlockInput, V as FactCardInput, bH as TwoColumnInput, H as DateEventInput, a1 as ImageWithCaptionInput, a6 as LeftFeatureInput, b2 as RightFeatureInput, aa as MapBlockInput, ba as StartBlockConfig, Y as FullBleedQuoteInput, a9 as ListBlockInput, aU as PhotoGridInput, J as DefinitionCardInput, t as ComparisonBarInput, a_ as PullQuoteInput, bQ as VideoWithCaptionInput, bP as VideoPullQuoteInput, G as DataTableInput, K as DiagramBlockInput, bC as TreeBlockInput, bv as TimelineBlockInput, k as Block, S as DrawingBlockInput, ae as MarkerStyle, A as AccentImage, a0 as ImageTreatment, a as AccentPosition, c as Animation, d as AnimationType, bo as ThemeColorScheme, O as Doc, bq as ThemeRegistry, aH as PageEmphasis, bp as ThemePageStyle, Q as DocDiagnostic, N as DiagramTemplateNode, M as DiagramTemplateEdge, by as TimelineTemplateTrack, bx as TimelineTemplateLink } from '../Doc-DmElSKmg.js';
2
+ export { T as FRONTMATTER_CUSTOM_TEMPLATES_KEY, U as FRONTMATTER_CUSTOM_THEMES_KEY, a5 as LayoutHints, b1 as RenderStyle, bn as ThemeColorPalette, bt as ThemeStyle, bu as ThemeTypography, bI as VIEWPORT_PRESETS, bT as ViewportPreset, bY as createTemplateContext, c3 as getLayoutHints, c6 as getTwoColumnPositions, c7 as getViewport, c8 as getViewportOrientation, cb as isTemplateBlock, ce as scaledFontSize } from '../Doc-DmElSKmg.js';
3
3
  import { L as MarkdownNode, a5 as TransitionType, a4 as TransitionDirection, M as MarkdownBlockNode, r as MarkdownHeading, n as MarkdownDocument, V as MarkdownTable, i as MarkdownCodeBlock, G as MarkdownList } from '../types-Be6sBUBx.js';
4
4
  import { C as CoercedBlockMeta } from '../annotationCoercion-Ckqpu33y.js';
5
- import { c as PageSection } from '../materializePageSection-CAJoa8fh.js';
6
- export { M as MaterializePageSectionOptions, a as MaterializePageSectionsOptions, P as PageMedia, b as PageRichText, d as PageSectionDiagnostic, e as PageSectionItem, f as PageSectionMaterialization, g as PageSectionSource, h as PageSpatialKind, i as PageTransformHints, m as materializePageSection, j as materializePageSections, r as resolvePageStyle } from '../materializePageSection-CAJoa8fh.js';
5
+ import { c as PageSection } from '../materializePageSection-BfttC9Zj.js';
6
+ export { M as MaterializePageSectionOptions, a as MaterializePageSectionsOptions, P as PageMedia, b as PageRichText, d as PageSectionDiagnostic, e as PageSectionItem, f as PageSectionMaterialization, g as PageSectionSource, h as PageSpatialKind, i as PageTransformHints, m as materializePageSection, j as materializePageSections, r as resolvePageStyle } from '../materializePageSection-BfttC9Zj.js';
7
7
  import { C as ContentContainer } from '../ContentContainer-B2w9sUoL.js';
8
8
  import { V as ViewIssue } from '../viewState-lTZS-hP_.js';
9
- export { D as DEFAULT_THEME, g as getAvailableThemes, b as getThemeSummaries, r as resolveTheme } from '../themeLibrary-z7t3x5CU.js';
9
+ export { D as DEFAULT_THEME, g as getAvailableThemes, b as getThemeSummaries, r as resolveTheme } from '../themeLibrary-ChnTImby.js';
10
10
 
11
11
  /** Runtime registry composition for built-in and document-scoped templates. */
12
12
 
@@ -2536,6 +2536,10 @@ declare const sectionExtractors: Record<string, SectionExtractor>;
2536
2536
  * - A string-HTML exporter can call `buildPageCss(theme)` for the same
2537
2537
  * bytes plus a `.squisq-page { … }` var block.
2538
2538
  *
2539
+ * The `document` variant (see `PageVariant`) is the `squisq-page--document`
2540
+ * class on the same wrapper, with its data attributes taken from
2541
+ * `resolvePageStyle(theme, hints, 'document')`.
2542
+ *
2539
2543
  * Responsive behavior uses container queries against the scroll container
2540
2544
  * (named `squisq-page`), with a media-query fallback for engines without
2541
2545
  * container support.
@@ -2558,7 +2562,7 @@ declare function pageStyleDataAttributes(pageStyle: ThemePageStyle): Record<stri
2558
2562
  * Structural, theme-independent stylesheet for the page rendition.
2559
2563
  * Everything is scoped under `.squisq-page`.
2560
2564
  */
2561
- declare const PAGE_BASE_CSS = "\n/* \u2500\u2500 Base \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page {\n background: var(--squisq-page-bg);\n color: var(--squisq-page-text);\n font-family: var(--squisq-page-body-font);\n line-height: var(--squisq-page-line-height);\n --squisq-page-divider-color: color-mix(in srgb, var(--squisq-page-text) 16%, transparent);\n --squisq-page-section-pad: 3.5rem;\n --squisq-page-shadow: none;\n}\n.squisq-page *, .squisq-page *::before, .squisq-page *::after { box-sizing: border-box; }\n.squisq-page img { max-width: 100%; height: auto; }\n.squisq-page a {\n color: var(--squisq-page-primary);\n text-decoration-color: color-mix(in srgb, var(--squisq-page-primary) 40%, transparent);\n}\n\n/* Page pattern washes (very low intensity) */\n.squisq-page[data-pattern='dots'] {\n background-image: radial-gradient(color-mix(in srgb, var(--squisq-page-text) 7%, transparent) 1px, transparent 1px);\n background-size: 22px 22px;\n}\n.squisq-page[data-pattern='grid'] {\n background-image:\n linear-gradient(color-mix(in srgb, var(--squisq-page-primary) 7%, transparent) 1px, transparent 1px),\n linear-gradient(90deg, color-mix(in srgb, var(--squisq-page-primary) 7%, transparent) 1px, transparent 1px);\n background-size: 44px 44px;\n}\n.squisq-page[data-pattern='diagonal'] {\n background-image: repeating-linear-gradient(\n -45deg,\n color-mix(in srgb, var(--squisq-page-text) 4%, transparent) 0 1px,\n transparent 1px 14px\n );\n}\n.squisq-page[data-pattern='noise'] { background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)' opacity='0.35'/%3E%3C/svg%3E\"); }\n\n/* Spacing scale */\n.squisq-page[data-spacing='compact'] { --squisq-page-section-pad: 2.25rem; }\n.squisq-page[data-spacing='comfortable'] { --squisq-page-section-pad: 3.5rem; }\n.squisq-page[data-spacing='generous'] { --squisq-page-section-pad: 5.25rem; }\n\n/* Shadow language */\n.squisq-page[data-shadow='soft'] { --squisq-page-shadow: 0 14px 36px color-mix(in srgb, var(--squisq-page-text) 14%, transparent); }\n.squisq-page[data-shadow='crisp'] { --squisq-page-shadow: 0 2px 10px color-mix(in srgb, var(--squisq-page-text) 26%, transparent); }\n.squisq-page[data-shadow='heavy'] { --squisq-page-shadow: 10px 10px 0 color-mix(in srgb, var(--squisq-page-text) 82%, transparent); }\n\n/* \u2500\u2500 Sections \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-section { position: relative; padding-block: var(--squisq-page-section-pad); }\n.squisq-page-section-inner {\n max-width: var(--squisq-page-content-max);\n margin-inline: auto;\n padding-inline: 24px;\n}\n/* Backdrops anchor to the section; these content roots stack above them. */\n.squisq-page-hero-body,\n.squisq-page-banner-body,\n.squisq-page-quote-figure { position: relative; }\n.squisq-page-section--feature-split .squisq-page-section-inner,\n.squisq-page-section--gallery .squisq-page-section-inner,\n.squisq-page-section--table-section .squisq-page-section-inner,\n.squisq-page-section--canvas-embed .squisq-page-section-inner,\n.squisq-page-section--stat-band .squisq-page-section-inner,\n.squisq-page-section--card-grid .squisq-page-section-inner,\n.squisq-page-section--media-figure .squisq-page-section-inner,\n.squisq-page-section--hero .squisq-page-section-inner {\n max-width: var(--squisq-page-wide-max);\n}\n\n/* Background rhythm */\n.squisq-page-section--bg-alternate { background: var(--squisq-page-bg-alt); }\n.squisq-page-section--bg-accent {\n background: var(--squisq-page-accent-bg);\n color: var(--squisq-page-accent-text);\n}\n.squisq-page-section--bg-media { color: #ffffff; }\n\n/* Dividers between adjacent sections */\n.squisq-page[data-divider='hairline'] .squisq-page-section + .squisq-page-section { border-top: 1px solid var(--squisq-page-divider-color); }\n.squisq-page[data-divider='thick-rule'] .squisq-page-section + .squisq-page-section { border-top: 3px solid var(--squisq-page-primary); }\n.squisq-page[data-divider='double-rule'] .squisq-page-section + .squisq-page-section { border-top: 4px double var(--squisq-page-divider-color); }\n.squisq-page[data-divider='dotted'] .squisq-page-section + .squisq-page-section { border-top: 2px dotted var(--squisq-page-divider-color); }\n/* Banded sections carry their own edges; media sections never need rules. */\n.squisq-page .squisq-page-section--bg-media,\n.squisq-page .squisq-page-section--bg-media + .squisq-page-section,\n.squisq-page .squisq-page-section--timeline-rail + .squisq-page-section--timeline-rail { border-top: none; }\n\n/* \u2500\u2500 Headings, eyebrows \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-section-title {\n font-family: var(--squisq-page-title-font);\n font-weight: var(--squisq-page-title-weight);\n line-height: 1.15;\n margin: 0 0 0.5em;\n}\n.squisq-page[data-heading-case='uppercase'] .squisq-page-section-title { text-transform: uppercase; letter-spacing: 0.03em; }\n.squisq-page[data-underline='accent-bar'] .squisq-page-section-title::after {\n content: '';\n display: block;\n width: 56px;\n height: 4px;\n margin-top: 0.4em;\n border-radius: 2px;\n background: var(--squisq-page-accent);\n}\n.squisq-page[data-underline='full-rule'] .squisq-page-section-title {\n border-bottom: 1px solid var(--squisq-page-divider-color);\n padding-bottom: 0.35em;\n}\n\n.squisq-page-eyebrow {\n display: block;\n font-size: 0.8125rem;\n font-weight: 600;\n letter-spacing: 0.14em;\n text-transform: uppercase;\n color: var(--squisq-page-accent);\n margin: 0 0 0.9em;\n}\n.squisq-page[data-eyebrow='numbered'] .squisq-page-eyebrow::after { content: ' \u2014'; color: var(--squisq-page-text-muted); }\n.squisq-page[data-eyebrow='mono-tag'] .squisq-page-eyebrow {\n display: inline-block;\n font-family: var(--squisq-page-mono-font);\n text-transform: none;\n letter-spacing: 0.06em;\n border: 1px solid color-mix(in srgb, var(--squisq-page-accent) 55%, transparent);\n border-radius: var(--squisq-page-radius);\n padding: 0.15em 0.6em;\n background: color-mix(in srgb, var(--squisq-page-accent) 10%, transparent);\n}\n.squisq-page[data-eyebrow='mono-tag'] .squisq-page-eyebrow::before { content: '['; opacity: 0.6; }\n.squisq-page[data-eyebrow='mono-tag'] .squisq-page-eyebrow::after { content: ']'; opacity: 0.6; }\n\n/* \u2500\u2500 Hero \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-section--hero { padding-block: calc(var(--squisq-page-section-pad) * 1.5); }\n.squisq-page-hero-title {\n font-family: var(--squisq-page-title-font);\n font-weight: var(--squisq-page-title-weight);\n line-height: 1.08;\n margin: 0;\n font-size: 2.75rem;\n}\n.squisq-page[data-heading-scale='display'] .squisq-page-hero-title { font-size: 3.4rem; }\n.squisq-page[data-heading-scale='oversized'] .squisq-page-hero-title { font-size: 4rem; font-size: clamp(3rem, 9cqw, 6rem); line-height: 1.02; }\n.squisq-page[data-heading-case='uppercase'] .squisq-page-hero-title { text-transform: uppercase; letter-spacing: 0.02em; }\n.squisq-page-hero-subtitle {\n margin: 1.1em 0 0;\n font-size: 1.25rem;\n color: var(--squisq-page-text-muted);\n max-width: 42em;\n white-space: pre-line;\n}\n.squisq-page-section--bg-media .squisq-page-hero-subtitle { color: rgba(255, 255, 255, 0.88); }\n\n/* Stacked (default): centered column */\n.squisq-page[data-hero-style='stacked'] .squisq-page-hero-body { text-align: center; }\n.squisq-page[data-hero-style='stacked'] .squisq-page-hero-subtitle { margin-inline: auto; }\n\n/* Oversized type: hard left, no decoration */\n.squisq-page[data-hero-style='oversized-type'] .squisq-page-hero-title { font-size: 4.25rem; font-size: clamp(3.25rem, 10cqw, 6.5rem); line-height: 0.98; }\n\n/* Split: text and media side by side */\n.squisq-page-hero-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 3rem; align-items: center; }\n.squisq-page-hero-grid .squisq-page-hero-media img { width: 100%; object-fit: cover; }\n\n/* Full-bleed & letterbox: media behind text */\n.squisq-page-section--hero-media {\n padding-block: 0;\n min-height: min(72svh, 620px);\n display: flex;\n align-items: flex-end;\n}\n.squisq-page[data-hero-style='letterbox'] .squisq-page-section--hero-media { min-height: min(52svh, 460px); }\n.squisq-page-hero-backdrop { position: absolute; inset: 0; overflow: hidden; }\n.squisq-page-hero-backdrop img { width: 100%; height: 100%; object-fit: cover; }\n.squisq-page-hero-backdrop::after {\n content: '';\n position: absolute;\n inset: 0;\n background: linear-gradient(180deg, rgba(0, 0, 0, 0.1) 30%, rgba(0, 0, 0, 0.68) 100%);\n}\n.squisq-page[data-hero-style='letterbox'] .squisq-page-hero-backdrop img { filter: saturate(0.9); }\n.squisq-page-section--hero-media .squisq-page-section-inner { padding-block: 3rem; width: 100%; }\n\n/* \u2500\u2500 Banner (sectionHeader) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-banner-title { font-size: 2rem; }\n.squisq-page[data-heading-scale='display'] .squisq-page-banner-title { font-size: 2.5rem; }\n.squisq-page[data-heading-scale='oversized'] .squisq-page-banner-title { font-size: 3rem; font-size: clamp(2.25rem, 6cqw, 3.75rem); }\n.squisq-page-section--banner.squisq-page-section--bg-media { padding-block: 0; min-height: 280px; display: flex; align-items: flex-end; }\n.squisq-page-section--banner.squisq-page-section--bg-media .squisq-page-section-inner { padding-block: 2rem; width: 100%; }\n.squisq-page-section--banner .squisq-page-section-title { margin-bottom: 0; }\n\n/* \u2500\u2500 Stat band \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-stats { display: flex; gap: 3rem; justify-content: center; text-align: center; flex-wrap: wrap; }\n.squisq-page-stat { flex: 1 1 220px; max-width: 420px; }\n.squisq-page-stat-value {\n display: block;\n font-family: var(--squisq-page-title-font);\n font-weight: 700;\n font-size: 3.25rem;\n line-height: 1;\n color: var(--squisq-page-accent);\n}\n.squisq-page[data-numerals='oversized'] .squisq-page-stat-value { font-size: 4.5rem; font-size: clamp(3.5rem, 8cqw, 5.5rem); }\n.squisq-page[data-numerals='mono'] .squisq-page-stat-value { font-family: var(--squisq-page-mono-font); letter-spacing: -0.02em; }\n.squisq-page[data-numerals='boxed'] .squisq-page-stat-value {\n display: inline-block;\n border: 2px solid var(--squisq-page-accent);\n border-radius: var(--squisq-page-radius);\n padding: 0.18em 0.4em;\n}\n.squisq-page-stat-title { display: block; margin-top: 0.9em; font-size: 1.125rem; font-weight: 600; }\n.squisq-page-stat-body { display: block; margin-top: 0.45em; color: var(--squisq-page-text-muted); font-size: 0.95rem; }\n.squisq-page-stat-meta { text-align: center; margin-top: 1.5rem; color: var(--squisq-page-text-muted); font-size: 0.85rem; }\n.squisq-page-stat-bar { height: 10px; border-radius: 999px; background: var(--squisq-page-accent); margin-top: 0.8em; }\n.squisq-page-stat--bars { text-align: left; }\n\n/* \u2500\u2500 Quote band \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-quote {\n margin: 0;\n font-family: var(--squisq-page-title-font);\n font-size: 1.6rem;\n line-height: 1.35;\n white-space: pre-line;\n}\n.squisq-page-section--em-strong .squisq-page-quote { font-size: 2.1rem; }\n.squisq-page-section--em-quiet .squisq-page-quote { font-size: 1.25rem; color: var(--squisq-page-text-muted); }\n.squisq-page-quote-attribution { margin-top: 1.1em; font-family: var(--squisq-page-body-font); font-size: 0.95rem; color: var(--squisq-page-text-muted); }\n.squisq-page-quote-attribution::before { content: '\u2014 '; }\n.squisq-page[data-quote-mark='accent-bar'] .squisq-page-quote-figure { border-left: 4px solid var(--squisq-page-accent); padding-left: 1.5rem; }\n.squisq-page[data-quote-mark='oversized-glyph'] .squisq-page-quote-figure { position: relative; padding-top: 1.25rem; }\n.squisq-page[data-quote-mark='oversized-glyph'] .squisq-page-quote-figure::before {\n content: '\\201C';\n position: absolute;\n top: -0.12em;\n left: -0.05em;\n font-family: var(--squisq-page-title-font);\n font-size: 5.5rem;\n line-height: 1;\n color: color-mix(in srgb, var(--squisq-page-accent) 42%, transparent);\n pointer-events: none;\n}\n.squisq-page-section--v-display .squisq-page-quote-figure { text-align: center; border-left: none; }\n.squisq-page-section--v-display .squisq-page-quote { font-size: 2.4rem; font-size: clamp(1.9rem, 5cqw, 3rem); }\n.squisq-page-section--v-editorial .squisq-page-quote-figure {\n border-block: 3px solid var(--squisq-page-primary);\n border-left: none;\n padding: 2rem 0.5rem;\n}\n/* Full-bleed quote over media */\n.squisq-page-section--quote-band.squisq-page-section--bg-media { padding-block: 0; min-height: 380px; display: flex; align-items: center; }\n.squisq-page-section--quote-band.squisq-page-section--bg-media .squisq-page-section-inner { padding-block: 3.5rem; }\n.squisq-page-quote-backdrop { position: absolute; inset: 0; overflow: hidden; }\n.squisq-page-quote-backdrop img, .squisq-page-quote-backdrop video { width: 100%; height: 100%; object-fit: cover; }\n.squisq-page-quote-backdrop::after { content: ''; position: absolute; inset: 0; background: rgba(0, 0, 0, 0.55); }\n.squisq-page-section--quote-band[data-hint-vignette] .squisq-page-quote-backdrop::after {\n background: radial-gradient(ellipse at center, rgba(0, 0, 0, 0.35) 0%, rgba(0, 0, 0, 0.75) 100%);\n}\n.squisq-page-section--quote-band.squisq-page-section--bg-media .squisq-page-quote-figure { border: none; text-align: center; }\n\n/* \u2500\u2500 Feature split \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-feature { display: grid; grid-template-columns: 1fr 1fr; gap: 3rem; align-items: center; }\n.squisq-page-feature--media-right .squisq-page-feature-media { order: 2; }\n.squisq-page-feature-media img { width: 100%; object-fit: cover; }\n.squisq-page-feature-title { font-size: 1.75rem; }\n.squisq-page-feature-body { color: var(--squisq-page-text-muted); font-size: 1.05rem; white-space: pre-line; margin: 0; }\n\n/* \u2500\u2500 Media figure \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-figure { margin: 0; }\n.squisq-page-figure img, .squisq-page-figure video { width: 100%; display: block; }\n.squisq-page-figure figcaption { margin-top: 0.9em; font-size: 0.9rem; color: var(--squisq-page-text-muted); text-align: center; }\n.squisq-page-media-credit { font-size: 0.78rem; opacity: 0.75; }\n\n/* Media frame treatment (figures, features, gallery tiles, cards) */\n.squisq-page-media-frame { overflow: hidden; }\n.squisq-page[data-framing='rounded'] .squisq-page-media-frame { border-radius: var(--squisq-page-radius); }\n.squisq-page[data-framing='bordered'] .squisq-page-media-frame { border: 3px solid var(--squisq-page-text); }\n.squisq-page[data-framing='polaroid'] .squisq-page-media-frame {\n background: #ffffff;\n padding: 10px 10px 16px;\n border: 1px solid rgba(0, 0, 0, 0.12);\n border-radius: 2px;\n}\n.squisq-page[data-framing='letterboxed'] .squisq-page-media-frame img { aspect-ratio: 21 / 9; object-fit: cover; }\n.squisq-page[data-framing='circle-accent'] .squisq-page-media-frame { border-radius: calc(var(--squisq-page-radius) * 2); }\n.squisq-page .squisq-page-media-frame { box-shadow: var(--squisq-page-shadow); }\n\n/* Rich body nodes that the selected template did not consume. This universal\n * supplement keeps diagrams/media visible without making every template\n * duplicate the same preservation logic. */\n.squisq-page-rich-content {\n margin-top: clamp(1.5rem, 4vw, 3rem);\n padding-top: clamp(1.25rem, 3vw, 2rem);\n border-top: 1px solid var(--squisq-page-divider-color);\n}\n.squisq-page-rich-content :is(img, video) { display: block; max-width: 100%; height: auto; margin-inline: auto; }\n.squisq-page-rich-content .squisq-md-mermaid { min-height: min(520px, 62vh); margin-block: 0; }\n\n/* \u2500\u2500 Gallery \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-gallery { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1.25rem; }\n.squisq-page-gallery .squisq-page-media-frame img { width: 100%; height: 100%; aspect-ratio: 4 / 3; object-fit: cover; }\n.squisq-page-gallery-caption { margin-top: 1.1rem; text-align: center; font-size: 0.9rem; color: var(--squisq-page-text-muted); }\n\n/* \u2500\u2500 Callout \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-callout {\n border-radius: var(--squisq-page-radius);\n border: 1px solid color-mix(in srgb, var(--squisq-page-accent) 32%, transparent);\n border-left: 5px solid var(--squisq-page-accent);\n background: color-mix(in srgb, var(--squisq-page-accent) 7%, var(--squisq-page-bg));\n padding: 1.75rem 2rem;\n box-shadow: var(--squisq-page-shadow);\n display: flex;\n gap: 1.75rem;\n align-items: flex-start;\n}\n.squisq-page-callout-title { font-family: var(--squisq-page-title-font); font-size: 1.35rem; font-weight: 700; margin: 0 0 0.5em; }\n.squisq-page-callout-body { margin: 0; white-space: pre-line; }\n.squisq-page-callout-meta { margin-top: 0.9em; font-size: 0.82rem; color: var(--squisq-page-text-muted); }\n.squisq-page-callout .squisq-page-media-frame { flex: 0 0 132px; }\n.squisq-page-callout .squisq-page-media-frame img { width: 132px; height: 132px; object-fit: cover; }\n.squisq-page-callout[data-hint-framing='circle-accent'] .squisq-page-media-frame,\n.squisq-page-callout[data-hint-framing='circle-accent'] .squisq-page-media-frame img { border-radius: 50%; }\n.squisq-page-section--v-definition .squisq-page-callout-title { font-style: italic; }\n.squisq-page-section--v-diagnostic .squisq-page-callout { border-left-color: var(--squisq-page-highlight); }\n\n/* \u2500\u2500 Card grid \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 1.5rem; }\n.squisq-page-card {\n border-radius: var(--squisq-page-radius);\n background: var(--squisq-page-bg-alt);\n border-top: 4px solid var(--squisq-page-card-accent, var(--squisq-page-accent));\n padding: 1.75rem 1.75rem 1.9rem;\n box-shadow: var(--squisq-page-shadow);\n}\n.squisq-page-card-title { font-family: var(--squisq-page-title-font); font-size: 1.3rem; margin: 0 0 0.4em; }\n.squisq-page-card-body { margin: 0; color: var(--squisq-page-text-muted); white-space: pre-line; }\n.squisq-page-cards-title { text-align: center; font-size: 1.9rem; margin-bottom: 1.75rem; }\n\n/* \u2500\u2500 Item list \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-items { list-style: none; margin: 0; padding: 0; counter-reset: squisq-item; max-width: 40em; }\n.squisq-page-items li {\n counter-increment: squisq-item;\n /* Grid + baseline alignment keeps the marker locked to the first text line\n regardless of marker size, body font, or line-height \u2014 an absolutely\n positioned marker with a fixed top offset drifts as soon as either\n changes. */\n display: grid;\n grid-template-columns: 3.4em 1fr;\n align-items: baseline;\n padding: 0.9em 0;\n font-size: 1.1rem;\n}\n.squisq-page-items li + li { border-top: 1px solid var(--squisq-page-divider-color); }\n.squisq-page-items li::before {\n content: counter(squisq-item, decimal-leading-zero);\n font-family: var(--squisq-page-title-font);\n font-weight: 700;\n color: var(--squisq-page-accent);\n font-size: 1.15em;\n}\n/* Item bodies are rendered markdown: neutralize UA paragraph margins (which\n would otherwise push the first line below the marker) and space blocks. */\n.squisq-page-item-body { min-width: 0; }\n.squisq-page-item-body > * { margin: 0; }\n.squisq-page-item-body > * + * { margin-top: 0.6em; }\n.squisq-page[data-numerals='mono'] .squisq-page-items li::before { font-family: var(--squisq-page-mono-font); }\n.squisq-page-items-title { font-size: 1.9rem; }\n\n/* \u2500\u2500 Timeline rail (dateEvent) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-section--timeline-rail { padding-block: 1.4rem; }\n.squisq-page-section--timeline-rail:first-child { padding-top: var(--squisq-page-section-pad); }\n.squisq-page-milestone { display: grid; grid-template-columns: 150px 1fr; gap: 2rem; align-items: baseline; position: relative; }\n.squisq-page-milestone-date {\n font-family: var(--squisq-page-title-font);\n font-weight: 700;\n color: var(--squisq-page-accent);\n font-size: 1.05rem;\n text-align: right;\n}\n.squisq-page-milestone-rail {\n position: absolute;\n left: 166px;\n top: -1.4rem;\n bottom: -1.4rem;\n width: 2px;\n background: color-mix(in srgb, var(--squisq-page-accent) 35%, transparent);\n}\n.squisq-page-milestone-rail::after {\n content: '';\n position: absolute;\n left: 50%;\n top: 0.55em;\n width: 12px;\n height: 12px;\n border-radius: 50%;\n transform: translateX(-50%);\n background: var(--squisq-page-accent);\n border: 2px solid var(--squisq-page-bg);\n}\n.squisq-page-milestone-body { padding-left: 2.25rem; white-space: pre-line; }\n.squisq-page-milestone-footer { margin-top: 0.5em; font-size: 0.85rem; color: var(--squisq-page-text-muted); }\n\n/* \u2500\u2500 Table section \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-table-title { font-size: 1.9rem; }\n.squisq-page-table-scroll { overflow-x: auto; border-radius: var(--squisq-page-radius); box-shadow: var(--squisq-page-shadow); }\n.squisq-page-table { width: 100%; border-collapse: collapse; font-size: 0.98rem; }\n.squisq-page-table th {\n background: var(--squisq-page-accent-bg);\n color: var(--squisq-page-accent-text);\n font-family: var(--squisq-page-title-font);\n text-align: left;\n padding: 0.8em 1em;\n}\n.squisq-page-table td { padding: 0.7em 1em; border-top: 1px solid var(--squisq-page-divider-color); }\n.squisq-page-table tbody tr:nth-child(even) { background: color-mix(in srgb, var(--squisq-page-text) 3.5%, transparent); }\n\n/* \u2500\u2500 Canvas embed (spatial SVG) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-canvas {\n width: 100%;\n margin-inline: auto;\n overflow: hidden;\n border-radius: var(--squisq-page-radius);\n}\n.squisq-page-canvas svg { display: block; width: 100%; height: 100%; }\n.squisq-page-canvas--framed { border: 1px solid var(--squisq-page-divider-color); box-shadow: var(--squisq-page-shadow); }\n.squisq-page-canvas--terminal { border: 1px solid color-mix(in srgb, var(--squisq-page-accent) 45%, transparent); }\n.squisq-page-canvas--terminal::before {\n content: '\\25CF \\25CF \\25CF';\n display: block;\n font-size: 9px;\n letter-spacing: 4px;\n padding: 6px 12px;\n color: color-mix(in srgb, var(--squisq-page-accent) 70%, transparent);\n background: color-mix(in srgb, var(--squisq-page-accent) 9%, var(--squisq-page-bg));\n border-bottom: 1px solid color-mix(in srgb, var(--squisq-page-accent) 30%, transparent);\n}\n\n/* \u2500\u2500 Prose \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-section--prose { padding-block: calc(var(--squisq-page-section-pad) * 0.45); }\n.squisq-page[data-divider] .squisq-page-section--prose + .squisq-page-section--prose { border-top: none; }\n.squisq-page-prose { font-size: 1.05rem; }\n.squisq-page-prose p { margin: 0; }\n.squisq-page-prose p + p { margin-top: 1.25em; }\n.squisq-page-prose > * + * { margin-top: 1.1em; }\n.squisq-page-prose code { font-family: var(--squisq-page-mono-font); font-size: 0.9em; }\n.squisq-page-prose :not(pre) > code { background: color-mix(in srgb, var(--squisq-page-text) 8%, transparent); border-radius: 4px; padding: 0.12em 0.35em; }\n.squisq-page-prose pre { background: color-mix(in srgb, var(--squisq-page-text) 6%, transparent); border-radius: var(--squisq-page-radius); padding: 1em 1.25em; overflow-x: auto; }\n.squisq-page-prose pre code { background: none; border-radius: 0; padding: 0; }\n.squisq-page .squisq-md-code-frame { position: relative; margin: 1em 0; }\n.squisq-page .squisq-md-code-frame > pre { margin: 0; padding-right: 5rem; }\n.squisq-page .squisq-md-code-copy {\n position: absolute;\n z-index: 1;\n top: 0.55rem;\n right: 0.55rem;\n min-width: 3.7rem;\n padding: 0.28rem 0.5rem;\n border: 1px solid color-mix(in srgb, var(--squisq-page-text) 20%, transparent);\n border-radius: 5px;\n background: color-mix(in srgb, var(--squisq-page-bg) 90%, transparent);\n color: inherit;\n font: 500 0.72rem/1.2 system-ui, sans-serif;\n cursor: pointer;\n opacity: 0.58;\n transition: opacity 120ms ease, background-color 120ms ease;\n}\n.squisq-page .squisq-md-code-frame:hover > .squisq-md-code-copy,\n.squisq-page .squisq-md-code-copy:focus-visible,\n.squisq-page .squisq-md-code-copy[data-copy-state='copied'],\n.squisq-page .squisq-md-code-copy[data-copy-state='failed'] { opacity: 1; }\n.squisq-page .squisq-md-code-copy:hover { background: var(--squisq-page-bg); }\n.squisq-page .squisq-md-code-copy:disabled { cursor: wait; }\n.squisq-page-prose blockquote { margin: 0; border-left: 4px solid var(--squisq-page-accent); padding-left: 1.25em; color: var(--squisq-page-text-muted); }\n.squisq-page-prose ul, .squisq-page-prose ol { padding-left: 1.5em; margin: 0; }\n.squisq-page-prose li + li { margin-top: 0.4em; }\n.squisq-page-prose hr { border: none; border-top: 1px solid var(--squisq-page-divider-color); }\n.squisq-page-prose table { width: 100%; border-collapse: collapse; }\n.squisq-page-prose th { font-family: var(--squisq-page-title-font); text-align: left; padding: 0.6em 0.8em; border-bottom: 2px solid var(--squisq-page-divider-color); }\n.squisq-page-prose td { padding: 0.55em 0.8em; border-bottom: 1px solid var(--squisq-page-divider-color); }\n.squisq-page-prose img { border-radius: var(--squisq-page-radius); }\n.squisq-page-prose h1, .squisq-page-prose h2, .squisq-page-prose h3,\n.squisq-page-prose h4, .squisq-page-prose h5, .squisq-page-prose h6 {\n font-family: var(--squisq-page-title-font);\n font-weight: var(--squisq-page-title-weight);\n line-height: 1.2;\n margin: 0 0 0.45em;\n}\n.squisq-page-prose h1 { font-size: 2.1rem; }\n.squisq-page-prose h2 { font-size: 1.65rem; }\n.squisq-page-prose h3 { font-size: 1.35rem; }\n.squisq-page-prose h4, .squisq-page-prose h5, .squisq-page-prose h6 { font-size: 1.15rem; }\n.squisq-page-section--prose[data-hint-drop-cap] .squisq-page-prose > p:first-child::first-letter {\n font-family: var(--squisq-page-title-font);\n font-size: 3.4em;\n font-weight: 700;\n float: left;\n line-height: 0.85;\n padding-right: 0.12em;\n color: var(--squisq-page-accent);\n}\n\n/* \u2500\u2500 Footer band \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-section--footer { text-align: center; }\n\n/* \u2500\u2500 Thin-margin embedding (chat bubbles) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page--thin .squisq-page-section-inner { padding-inline: 0; }\n.squisq-page--thin .squisq-page-section { padding-block: 1.5rem; }\n\n/* Thumbnail image mode */\n.squisq-page--thumbnail-images .squisq-page-prose img,\n.squisq-page--thumbnail-images .squisq-page-figure img { max-width: 100px; max-height: 100px; object-fit: cover; }\n\n/* \u2500\u2500 Reveal animation (progressive enhancement) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n@media (prefers-reduced-motion: no-preference) {\n .squisq-page-reveal { opacity: 0; transform: translateY(14px); transition: opacity 0.55s ease, transform 0.55s ease; }\n .squisq-page-reveal--in { opacity: 1; transform: none; }\n}\n\n/* \u2500\u2500 Responsive \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n@container squisq-page (max-width: 720px) {\n\n.squisq-page-hero-grid { grid-template-columns: 1fr; gap: 1.5rem; }\n.squisq-page-feature { grid-template-columns: 1fr; }\n.squisq-page-feature--media-right .squisq-page-feature-media { order: 0; }\n.squisq-page-stats { flex-direction: column; gap: 1.75rem; }\n.squisq-page-cards { grid-template-columns: 1fr; }\n.squisq-page-gallery { grid-template-columns: repeat(2, 1fr); }\n.squisq-page-milestone { grid-template-columns: 1fr; gap: 0.5rem; }\n.squisq-page-milestone-rail { display: none; }\n.squisq-page-section-inner { padding-inline: 18px; }\n\n}\n@supports not (container-type: inline-size) {\n @media (max-width: 720px) {\n\n.squisq-page-hero-grid { grid-template-columns: 1fr; gap: 1.5rem; }\n.squisq-page-feature { grid-template-columns: 1fr; }\n.squisq-page-feature--media-right .squisq-page-feature-media { order: 0; }\n.squisq-page-stats { flex-direction: column; gap: 1.75rem; }\n.squisq-page-cards { grid-template-columns: 1fr; }\n.squisq-page-gallery { grid-template-columns: repeat(2, 1fr); }\n.squisq-page-milestone { grid-template-columns: 1fr; gap: 0.5rem; }\n.squisq-page-milestone-rail { display: none; }\n.squisq-page-section-inner { padding-inline: 18px; }\n\n }\n}\n";
2565
+ declare const PAGE_BASE_CSS = "\n/* \u2500\u2500 Base \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page {\n background: var(--squisq-page-bg);\n color: var(--squisq-page-text);\n font-family: var(--squisq-page-body-font);\n line-height: var(--squisq-page-line-height);\n --squisq-page-divider-color: color-mix(in srgb, var(--squisq-page-text) 16%, transparent);\n --squisq-page-section-pad: 3.5rem;\n --squisq-page-shadow: none;\n}\n.squisq-page *, .squisq-page *::before, .squisq-page *::after { box-sizing: border-box; }\n.squisq-page img { max-width: 100%; height: auto; }\n.squisq-page a {\n color: var(--squisq-page-primary);\n text-decoration-color: color-mix(in srgb, var(--squisq-page-primary) 40%, transparent);\n}\n\n/* Page pattern washes (very low intensity) */\n.squisq-page[data-pattern='dots'] {\n background-image: radial-gradient(color-mix(in srgb, var(--squisq-page-text) 7%, transparent) 1px, transparent 1px);\n background-size: 22px 22px;\n}\n.squisq-page[data-pattern='grid'] {\n background-image:\n linear-gradient(color-mix(in srgb, var(--squisq-page-primary) 7%, transparent) 1px, transparent 1px),\n linear-gradient(90deg, color-mix(in srgb, var(--squisq-page-primary) 7%, transparent) 1px, transparent 1px);\n background-size: 44px 44px;\n}\n.squisq-page[data-pattern='diagonal'] {\n background-image: repeating-linear-gradient(\n -45deg,\n color-mix(in srgb, var(--squisq-page-text) 4%, transparent) 0 1px,\n transparent 1px 14px\n );\n}\n.squisq-page[data-pattern='noise'] { background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)' opacity='0.35'/%3E%3C/svg%3E\"); }\n\n/* Spacing scale */\n.squisq-page[data-spacing='compact'] { --squisq-page-section-pad: 2.25rem; }\n.squisq-page[data-spacing='comfortable'] { --squisq-page-section-pad: 3.5rem; }\n.squisq-page[data-spacing='generous'] { --squisq-page-section-pad: 5.25rem; }\n\n/* Shadow language */\n.squisq-page[data-shadow='soft'] { --squisq-page-shadow: 0 14px 36px color-mix(in srgb, var(--squisq-page-text) 14%, transparent); }\n.squisq-page[data-shadow='crisp'] { --squisq-page-shadow: 0 2px 10px color-mix(in srgb, var(--squisq-page-text) 26%, transparent); }\n.squisq-page[data-shadow='heavy'] { --squisq-page-shadow: 10px 10px 0 color-mix(in srgb, var(--squisq-page-text) 82%, transparent); }\n\n/* \u2500\u2500 Sections \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-section { position: relative; padding-block: var(--squisq-page-section-pad); }\n.squisq-page-section-inner {\n max-width: var(--squisq-page-content-max);\n margin-inline: auto;\n padding-inline: 24px;\n}\n/* Backdrops anchor to the section; these content roots stack above them. */\n.squisq-page-hero-body,\n.squisq-page-banner-body,\n.squisq-page-quote-figure { position: relative; }\n.squisq-page-section--feature-split .squisq-page-section-inner,\n.squisq-page-section--gallery .squisq-page-section-inner,\n.squisq-page-section--table-section .squisq-page-section-inner,\n.squisq-page-section--canvas-embed .squisq-page-section-inner,\n.squisq-page-section--stat-band .squisq-page-section-inner,\n.squisq-page-section--card-grid .squisq-page-section-inner,\n.squisq-page-section--media-figure .squisq-page-section-inner,\n.squisq-page-section--hero .squisq-page-section-inner {\n max-width: var(--squisq-page-wide-max);\n}\n\n/* Background rhythm */\n.squisq-page-section--bg-alternate { background: var(--squisq-page-bg-alt); }\n.squisq-page-section--bg-accent {\n background: var(--squisq-page-accent-bg);\n color: var(--squisq-page-accent-text);\n}\n.squisq-page-section--bg-media { color: #ffffff; }\n\n/* Dividers between adjacent sections */\n.squisq-page[data-divider='hairline'] .squisq-page-section + .squisq-page-section { border-top: 1px solid var(--squisq-page-divider-color); }\n.squisq-page[data-divider='thick-rule'] .squisq-page-section + .squisq-page-section { border-top: 3px solid var(--squisq-page-primary); }\n.squisq-page[data-divider='double-rule'] .squisq-page-section + .squisq-page-section { border-top: 4px double var(--squisq-page-divider-color); }\n.squisq-page[data-divider='dotted'] .squisq-page-section + .squisq-page-section { border-top: 2px dotted var(--squisq-page-divider-color); }\n/* Banded sections carry their own edges; media sections never need rules. */\n.squisq-page .squisq-page-section--bg-media,\n.squisq-page .squisq-page-section--bg-media + .squisq-page-section,\n.squisq-page .squisq-page-section--timeline-rail + .squisq-page-section--timeline-rail { border-top: none; }\n\n/* \u2500\u2500 Headings, eyebrows \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-section-title {\n font-family: var(--squisq-page-title-font);\n font-weight: var(--squisq-page-title-weight);\n line-height: 1.15;\n margin: 0 0 0.5em;\n}\n.squisq-page[data-heading-case='uppercase'] .squisq-page-section-title { text-transform: uppercase; letter-spacing: 0.03em; }\n.squisq-page[data-underline='accent-bar'] .squisq-page-section-title::after {\n content: '';\n display: block;\n width: 56px;\n height: 4px;\n margin-top: 0.4em;\n border-radius: 2px;\n background: var(--squisq-page-accent);\n}\n.squisq-page[data-underline='full-rule'] .squisq-page-section-title {\n border-bottom: 1px solid var(--squisq-page-divider-color);\n padding-bottom: 0.35em;\n}\n\n.squisq-page-eyebrow {\n display: block;\n font-size: 0.8125rem;\n font-weight: 600;\n letter-spacing: 0.14em;\n text-transform: uppercase;\n color: var(--squisq-page-accent);\n margin: 0 0 0.9em;\n}\n.squisq-page[data-eyebrow='numbered'] .squisq-page-eyebrow::after { content: ' \u2014'; color: var(--squisq-page-text-muted); }\n.squisq-page[data-eyebrow='mono-tag'] .squisq-page-eyebrow {\n display: inline-block;\n font-family: var(--squisq-page-mono-font);\n text-transform: none;\n letter-spacing: 0.06em;\n border: 1px solid color-mix(in srgb, var(--squisq-page-accent) 55%, transparent);\n border-radius: var(--squisq-page-radius);\n padding: 0.15em 0.6em;\n background: color-mix(in srgb, var(--squisq-page-accent) 10%, transparent);\n}\n.squisq-page[data-eyebrow='mono-tag'] .squisq-page-eyebrow::before { content: '['; opacity: 0.6; }\n.squisq-page[data-eyebrow='mono-tag'] .squisq-page-eyebrow::after { content: ']'; opacity: 0.6; }\n\n/* \u2500\u2500 Hero \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-section--hero { padding-block: calc(var(--squisq-page-section-pad) * 1.5); }\n.squisq-page-hero-title {\n font-family: var(--squisq-page-title-font);\n font-weight: var(--squisq-page-title-weight);\n line-height: 1.08;\n margin: 0;\n font-size: 2.75rem;\n}\n.squisq-page[data-heading-scale='display'] .squisq-page-hero-title { font-size: 3.4rem; }\n.squisq-page[data-heading-scale='oversized'] .squisq-page-hero-title { font-size: 4rem; font-size: clamp(3rem, 9cqw, 6rem); line-height: 1.02; }\n.squisq-page[data-heading-case='uppercase'] .squisq-page-hero-title { text-transform: uppercase; letter-spacing: 0.02em; }\n.squisq-page-hero-subtitle {\n margin: 1.1em 0 0;\n font-size: 1.25rem;\n color: var(--squisq-page-text-muted);\n max-width: 42em;\n white-space: pre-line;\n}\n.squisq-page-section--bg-media .squisq-page-hero-subtitle { color: rgba(255, 255, 255, 0.88); }\n\n/* Stacked (default): centered column */\n.squisq-page[data-hero-style='stacked'] .squisq-page-hero-body { text-align: center; }\n.squisq-page[data-hero-style='stacked'] .squisq-page-hero-subtitle { margin-inline: auto; }\n\n/* Oversized type: hard left, no decoration */\n.squisq-page[data-hero-style='oversized-type'] .squisq-page-hero-title { font-size: 4.25rem; font-size: clamp(3.25rem, 10cqw, 6.5rem); line-height: 0.98; }\n\n/* Split: text and media side by side */\n.squisq-page-hero-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 3rem; align-items: center; }\n.squisq-page-hero-grid .squisq-page-hero-media img { width: 100%; object-fit: cover; }\n\n/* Full-bleed & letterbox: media behind text */\n.squisq-page-section--hero-media {\n padding-block: 0;\n min-height: min(72svh, 620px);\n display: flex;\n align-items: flex-end;\n}\n.squisq-page[data-hero-style='letterbox'] .squisq-page-section--hero-media { min-height: min(52svh, 460px); }\n.squisq-page-hero-backdrop { position: absolute; inset: 0; overflow: hidden; }\n.squisq-page-hero-backdrop img { width: 100%; height: 100%; object-fit: cover; }\n.squisq-page-hero-backdrop::after {\n content: '';\n position: absolute;\n inset: 0;\n background: linear-gradient(180deg, rgba(0, 0, 0, 0.1) 30%, rgba(0, 0, 0, 0.68) 100%);\n}\n.squisq-page[data-hero-style='letterbox'] .squisq-page-hero-backdrop img { filter: saturate(0.9); }\n.squisq-page-section--hero-media .squisq-page-section-inner { padding-block: 3rem; width: 100%; }\n\n/* \u2500\u2500 Banner (sectionHeader) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-banner-title { font-size: 2rem; }\n.squisq-page[data-heading-scale='display'] .squisq-page-banner-title { font-size: 2.5rem; }\n.squisq-page[data-heading-scale='oversized'] .squisq-page-banner-title { font-size: 3rem; font-size: clamp(2.25rem, 6cqw, 3.75rem); }\n.squisq-page-section--banner.squisq-page-section--bg-media { padding-block: 0; min-height: 280px; display: flex; align-items: flex-end; }\n.squisq-page-section--banner.squisq-page-section--bg-media .squisq-page-section-inner { padding-block: 2rem; width: 100%; }\n.squisq-page-section--banner .squisq-page-section-title { margin-bottom: 0; }\n\n/* \u2500\u2500 Stat band \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-stats { display: flex; gap: 3rem; justify-content: center; text-align: center; flex-wrap: wrap; }\n.squisq-page-stat { flex: 1 1 220px; max-width: 420px; }\n.squisq-page-stat-value {\n display: block;\n font-family: var(--squisq-page-title-font);\n font-weight: 700;\n font-size: 3.25rem;\n line-height: 1;\n color: var(--squisq-page-accent);\n}\n.squisq-page[data-numerals='oversized'] .squisq-page-stat-value { font-size: 4.5rem; font-size: clamp(3.5rem, 8cqw, 5.5rem); }\n.squisq-page[data-numerals='mono'] .squisq-page-stat-value { font-family: var(--squisq-page-mono-font); letter-spacing: -0.02em; }\n.squisq-page[data-numerals='boxed'] .squisq-page-stat-value {\n display: inline-block;\n border: 2px solid var(--squisq-page-accent);\n border-radius: var(--squisq-page-radius);\n padding: 0.18em 0.4em;\n}\n.squisq-page-stat-title { display: block; margin-top: 0.9em; font-size: 1.125rem; font-weight: 600; }\n.squisq-page-stat-body { display: block; margin-top: 0.45em; color: var(--squisq-page-text-muted); font-size: 0.95rem; }\n.squisq-page-stat-meta { text-align: center; margin-top: 1.5rem; color: var(--squisq-page-text-muted); font-size: 0.85rem; }\n.squisq-page-stat-bar { height: 10px; border-radius: 999px; background: var(--squisq-page-accent); margin-top: 0.8em; }\n.squisq-page-stat--bars { text-align: left; }\n\n/* \u2500\u2500 Quote band \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-quote {\n margin: 0;\n font-family: var(--squisq-page-title-font);\n font-size: 1.6rem;\n line-height: 1.35;\n white-space: pre-line;\n}\n.squisq-page-section--em-strong .squisq-page-quote { font-size: 2.1rem; }\n.squisq-page-section--em-quiet .squisq-page-quote { font-size: 1.25rem; color: var(--squisq-page-text-muted); }\n.squisq-page-quote-attribution { margin-top: 1.1em; font-family: var(--squisq-page-body-font); font-size: 0.95rem; color: var(--squisq-page-text-muted); }\n.squisq-page-quote-attribution::before { content: '\u2014 '; }\n.squisq-page[data-quote-mark='accent-bar'] .squisq-page-quote-figure { border-left: 4px solid var(--squisq-page-accent); padding-left: 1.5rem; }\n.squisq-page[data-quote-mark='oversized-glyph'] .squisq-page-quote-figure { position: relative; padding-top: 1.25rem; }\n.squisq-page[data-quote-mark='oversized-glyph'] .squisq-page-quote-figure::before {\n content: '\\201C';\n position: absolute;\n top: -0.12em;\n left: -0.05em;\n font-family: var(--squisq-page-title-font);\n font-size: 5.5rem;\n line-height: 1;\n color: color-mix(in srgb, var(--squisq-page-accent) 42%, transparent);\n pointer-events: none;\n}\n.squisq-page-section--v-display .squisq-page-quote-figure { text-align: center; border-left: none; }\n.squisq-page-section--v-display .squisq-page-quote { font-size: 2.4rem; font-size: clamp(1.9rem, 5cqw, 3rem); }\n.squisq-page-section--v-editorial .squisq-page-quote-figure {\n border-block: 3px solid var(--squisq-page-primary);\n border-left: none;\n padding: 2rem 0.5rem;\n}\n/* Full-bleed quote over media */\n.squisq-page-section--quote-band.squisq-page-section--bg-media { padding-block: 0; min-height: 380px; display: flex; align-items: center; }\n.squisq-page-section--quote-band.squisq-page-section--bg-media .squisq-page-section-inner { padding-block: 3.5rem; }\n.squisq-page-quote-backdrop { position: absolute; inset: 0; overflow: hidden; }\n.squisq-page-quote-backdrop img, .squisq-page-quote-backdrop video { width: 100%; height: 100%; object-fit: cover; }\n.squisq-page-quote-backdrop::after { content: ''; position: absolute; inset: 0; background: rgba(0, 0, 0, 0.55); }\n.squisq-page-section--quote-band[data-hint-vignette] .squisq-page-quote-backdrop::after {\n background: radial-gradient(ellipse at center, rgba(0, 0, 0, 0.35) 0%, rgba(0, 0, 0, 0.75) 100%);\n}\n.squisq-page-section--quote-band.squisq-page-section--bg-media .squisq-page-quote-figure { border: none; text-align: center; }\n\n/* \u2500\u2500 Feature split \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-feature { display: grid; grid-template-columns: 1fr 1fr; gap: 3rem; align-items: center; }\n.squisq-page-feature--media-right .squisq-page-feature-media { order: 2; }\n.squisq-page-feature-media img { width: 100%; object-fit: cover; }\n.squisq-page-feature-title { font-size: 1.75rem; }\n.squisq-page-feature-body { color: var(--squisq-page-text-muted); font-size: 1.05rem; white-space: pre-line; margin: 0; }\n\n/* \u2500\u2500 Media figure \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-figure { margin: 0; }\n.squisq-page-figure img, .squisq-page-figure video { width: 100%; display: block; }\n.squisq-page-figure figcaption { margin-top: 0.9em; font-size: 0.9rem; color: var(--squisq-page-text-muted); text-align: center; }\n.squisq-page-media-credit { font-size: 0.78rem; opacity: 0.75; }\n\n/* Media frame treatment (figures, features, gallery tiles, cards) */\n.squisq-page-media-frame { overflow: hidden; }\n.squisq-page[data-framing='rounded'] .squisq-page-media-frame { border-radius: var(--squisq-page-radius); }\n.squisq-page[data-framing='bordered'] .squisq-page-media-frame { border: 3px solid var(--squisq-page-text); }\n.squisq-page[data-framing='polaroid'] .squisq-page-media-frame {\n background: #ffffff;\n padding: 10px 10px 16px;\n border: 1px solid rgba(0, 0, 0, 0.12);\n border-radius: 2px;\n}\n.squisq-page[data-framing='letterboxed'] .squisq-page-media-frame img { aspect-ratio: 21 / 9; object-fit: cover; }\n.squisq-page[data-framing='circle-accent'] .squisq-page-media-frame { border-radius: calc(var(--squisq-page-radius) * 2); }\n.squisq-page .squisq-page-media-frame { box-shadow: var(--squisq-page-shadow); }\n\n/* Rich body nodes that the selected template did not consume. This universal\n * supplement keeps diagrams/media visible without making every template\n * duplicate the same preservation logic. */\n.squisq-page-rich-content {\n margin-top: clamp(1.5rem, 4vw, 3rem);\n padding-top: clamp(1.25rem, 3vw, 2rem);\n border-top: 1px solid var(--squisq-page-divider-color);\n}\n.squisq-page-rich-content :is(img, video) { display: block; max-width: 100%; height: auto; margin-inline: auto; }\n.squisq-page-rich-content .squisq-md-mermaid { min-height: min(520px, 62vh); margin-block: 0; }\n\n/* \u2500\u2500 Gallery \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-gallery { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1.25rem; }\n.squisq-page-gallery .squisq-page-media-frame img { width: 100%; height: 100%; aspect-ratio: 4 / 3; object-fit: cover; }\n.squisq-page-gallery-caption { margin-top: 1.1rem; text-align: center; font-size: 0.9rem; color: var(--squisq-page-text-muted); }\n\n/* \u2500\u2500 Callout \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-callout {\n border-radius: var(--squisq-page-radius);\n border: 1px solid color-mix(in srgb, var(--squisq-page-accent) 32%, transparent);\n border-left: 5px solid var(--squisq-page-accent);\n background: color-mix(in srgb, var(--squisq-page-accent) 7%, var(--squisq-page-bg));\n padding: 1.75rem 2rem;\n box-shadow: var(--squisq-page-shadow);\n display: flex;\n gap: 1.75rem;\n align-items: flex-start;\n}\n.squisq-page-callout-title { font-family: var(--squisq-page-title-font); font-size: 1.35rem; font-weight: 700; margin: 0 0 0.5em; }\n.squisq-page-callout-body { margin: 0; white-space: pre-line; }\n.squisq-page-callout-meta { margin-top: 0.9em; font-size: 0.82rem; color: var(--squisq-page-text-muted); }\n.squisq-page-callout .squisq-page-media-frame { flex: 0 0 132px; }\n.squisq-page-callout .squisq-page-media-frame img { width: 132px; height: 132px; object-fit: cover; }\n.squisq-page-callout[data-hint-framing='circle-accent'] .squisq-page-media-frame,\n.squisq-page-callout[data-hint-framing='circle-accent'] .squisq-page-media-frame img { border-radius: 50%; }\n.squisq-page-section--v-definition .squisq-page-callout-title { font-style: italic; }\n.squisq-page-section--v-diagnostic .squisq-page-callout { border-left-color: var(--squisq-page-highlight); }\n\n/* \u2500\u2500 Card grid \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 1.5rem; }\n.squisq-page-card {\n border-radius: var(--squisq-page-radius);\n background: var(--squisq-page-bg-alt);\n border-top: 4px solid var(--squisq-page-card-accent, var(--squisq-page-accent));\n padding: 1.75rem 1.75rem 1.9rem;\n box-shadow: var(--squisq-page-shadow);\n}\n.squisq-page-card-title { font-family: var(--squisq-page-title-font); font-size: 1.3rem; margin: 0 0 0.4em; }\n.squisq-page-card-body { margin: 0; color: var(--squisq-page-text-muted); white-space: pre-line; }\n.squisq-page-cards-title { text-align: center; font-size: 1.9rem; margin-bottom: 1.75rem; }\n\n/* \u2500\u2500 Item list \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-items { list-style: none; margin: 0; padding: 0; counter-reset: squisq-item; max-width: 40em; }\n.squisq-page-items li {\n counter-increment: squisq-item;\n /* Grid + baseline alignment keeps the marker locked to the first text line\n regardless of marker size, body font, or line-height \u2014 an absolutely\n positioned marker with a fixed top offset drifts as soon as either\n changes. */\n display: grid;\n grid-template-columns: 3.4em 1fr;\n align-items: baseline;\n padding: 0.9em 0;\n font-size: 1.1rem;\n}\n.squisq-page-items li + li { border-top: 1px solid var(--squisq-page-divider-color); }\n.squisq-page-items li::before {\n content: counter(squisq-item, decimal-leading-zero);\n font-family: var(--squisq-page-title-font);\n font-weight: 700;\n color: var(--squisq-page-accent);\n font-size: 1.15em;\n}\n/* Item bodies are rendered markdown: neutralize UA paragraph margins (which\n would otherwise push the first line below the marker) and space blocks.\n MarkdownRenderer wraps its blocks in a .squisq-md div, so the paragraphs\n are grandchildren. */\n.squisq-page-item-body { min-width: 0; }\n.squisq-page-item-body > *,\n.squisq-page-item-body > .squisq-md > * { margin: 0; }\n.squisq-page-item-body > * + *,\n.squisq-page-item-body > .squisq-md > * + * { margin-top: 0.6em; }\n.squisq-page[data-numerals='mono'] .squisq-page-items li::before { font-family: var(--squisq-page-mono-font); }\n.squisq-page-items-title { font-size: 1.9rem; }\n\n/* \u2500\u2500 Timeline rail (dateEvent) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-section--timeline-rail { padding-block: 1.4rem; }\n.squisq-page-section--timeline-rail:first-child { padding-top: var(--squisq-page-section-pad); }\n.squisq-page-milestone { display: grid; grid-template-columns: 150px 1fr; gap: 2rem; align-items: baseline; position: relative; }\n.squisq-page-milestone-date {\n font-family: var(--squisq-page-title-font);\n font-weight: 700;\n color: var(--squisq-page-accent);\n font-size: 1.05rem;\n text-align: right;\n}\n.squisq-page-milestone-rail {\n position: absolute;\n left: 166px;\n top: -1.4rem;\n bottom: -1.4rem;\n width: 2px;\n background: color-mix(in srgb, var(--squisq-page-accent) 35%, transparent);\n}\n.squisq-page-milestone-rail::after {\n content: '';\n position: absolute;\n left: 50%;\n top: 0.55em;\n width: 12px;\n height: 12px;\n border-radius: 50%;\n transform: translateX(-50%);\n background: var(--squisq-page-accent);\n border: 2px solid var(--squisq-page-bg);\n}\n.squisq-page-milestone-body { padding-left: 2.25rem; white-space: pre-line; }\n.squisq-page-milestone-footer { margin-top: 0.5em; font-size: 0.85rem; color: var(--squisq-page-text-muted); }\n\n/* \u2500\u2500 Table section \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-table-title { font-size: 1.9rem; }\n.squisq-page-table-scroll { overflow-x: auto; border-radius: var(--squisq-page-radius); box-shadow: var(--squisq-page-shadow); }\n.squisq-page-table { width: 100%; border-collapse: collapse; font-size: 0.98rem; }\n.squisq-page-table th {\n background: var(--squisq-page-accent-bg);\n color: var(--squisq-page-accent-text);\n font-family: var(--squisq-page-title-font);\n text-align: left;\n padding: 0.8em 1em;\n}\n.squisq-page-table td { padding: 0.7em 1em; border-top: 1px solid var(--squisq-page-divider-color); }\n.squisq-page-table tbody tr:nth-child(even) { background: color-mix(in srgb, var(--squisq-page-text) 3.5%, transparent); }\n\n/* \u2500\u2500 Canvas embed (spatial SVG) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-canvas {\n width: 100%;\n margin-inline: auto;\n overflow: hidden;\n border-radius: var(--squisq-page-radius);\n}\n.squisq-page-canvas svg { display: block; width: 100%; height: 100%; }\n.squisq-page-canvas--framed { border: 1px solid var(--squisq-page-divider-color); box-shadow: var(--squisq-page-shadow); }\n.squisq-page-canvas--terminal { border: 1px solid color-mix(in srgb, var(--squisq-page-accent) 45%, transparent); }\n.squisq-page-canvas--terminal::before {\n content: '\\25CF \\25CF \\25CF';\n display: block;\n font-size: 9px;\n letter-spacing: 4px;\n padding: 6px 12px;\n color: color-mix(in srgb, var(--squisq-page-accent) 70%, transparent);\n background: color-mix(in srgb, var(--squisq-page-accent) 9%, var(--squisq-page-bg));\n border-bottom: 1px solid color-mix(in srgb, var(--squisq-page-accent) 30%, transparent);\n}\n\n/* \u2500\u2500 Prose \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-section--prose { padding-block: calc(var(--squisq-page-section-pad) * 0.45); }\n.squisq-page[data-divider] .squisq-page-section--prose + .squisq-page-section--prose { border-top: none; }\n.squisq-page-prose { font-size: 1.05rem; }\n.squisq-page-prose p { margin: 0; }\n.squisq-page-prose p + p { margin-top: 1.25em; }\n.squisq-page-prose > * + * { margin-top: 1.1em; }\n.squisq-page-prose code { font-family: var(--squisq-page-mono-font); font-size: 0.9em; }\n.squisq-page-prose :not(pre) > code { background: color-mix(in srgb, var(--squisq-page-text) 8%, transparent); border-radius: 4px; padding: 0.12em 0.35em; }\n.squisq-page-prose pre { background: color-mix(in srgb, var(--squisq-page-text) 6%, transparent); border-radius: var(--squisq-page-radius); padding: 1em 1.25em; overflow-x: auto; }\n.squisq-page-prose pre code { background: none; border-radius: 0; padding: 0; }\n.squisq-page .squisq-md-code-frame { position: relative; margin: 1em 0; }\n.squisq-page .squisq-md-code-frame > pre { margin: 0; padding-right: 5rem; }\n.squisq-page .squisq-md-code-copy {\n position: absolute;\n z-index: 1;\n top: 0.55rem;\n right: 0.55rem;\n min-width: 3.7rem;\n padding: 0.28rem 0.5rem;\n border: 1px solid color-mix(in srgb, var(--squisq-page-text) 20%, transparent);\n border-radius: 5px;\n background: color-mix(in srgb, var(--squisq-page-bg) 90%, transparent);\n color: inherit;\n font: 500 0.72rem/1.2 system-ui, sans-serif;\n cursor: pointer;\n opacity: 0.58;\n transition: opacity 120ms ease, background-color 120ms ease;\n}\n.squisq-page .squisq-md-code-frame:hover > .squisq-md-code-copy,\n.squisq-page .squisq-md-code-copy:focus-visible,\n.squisq-page .squisq-md-code-copy[data-copy-state='copied'],\n.squisq-page .squisq-md-code-copy[data-copy-state='failed'] { opacity: 1; }\n.squisq-page .squisq-md-code-copy:hover { background: var(--squisq-page-bg); }\n.squisq-page .squisq-md-code-copy:disabled { cursor: wait; }\n.squisq-page-prose blockquote { margin: 0; border-left: 4px solid var(--squisq-page-accent); padding-left: 1.25em; color: var(--squisq-page-text-muted); }\n.squisq-page-prose ul, .squisq-page-prose ol { padding-left: 1.5em; margin: 0; }\n.squisq-page-prose li + li { margin-top: 0.4em; }\n.squisq-page-prose hr { border: none; border-top: 1px solid var(--squisq-page-divider-color); }\n.squisq-page-prose table { width: 100%; border-collapse: collapse; }\n.squisq-page-prose th { font-family: var(--squisq-page-title-font); text-align: left; padding: 0.6em 0.8em; border-bottom: 2px solid var(--squisq-page-divider-color); }\n.squisq-page-prose td { padding: 0.55em 0.8em; border-bottom: 1px solid var(--squisq-page-divider-color); }\n.squisq-page-prose img { border-radius: var(--squisq-page-radius); }\n.squisq-page-prose h1, .squisq-page-prose h2, .squisq-page-prose h3,\n.squisq-page-prose h4, .squisq-page-prose h5, .squisq-page-prose h6 {\n font-family: var(--squisq-page-title-font);\n font-weight: var(--squisq-page-title-weight);\n line-height: 1.2;\n margin: 0 0 0.45em;\n}\n.squisq-page-prose h1 { font-size: 2.1rem; }\n.squisq-page-prose h2 { font-size: 1.65rem; }\n.squisq-page-prose h3 { font-size: 1.35rem; }\n.squisq-page-prose h4, .squisq-page-prose h5, .squisq-page-prose h6 { font-size: 1.15rem; }\n.squisq-page-section--prose[data-hint-drop-cap] .squisq-page-prose > p:first-child::first-letter {\n font-family: var(--squisq-page-title-font);\n font-size: 3.4em;\n font-weight: 700;\n float: left;\n line-height: 0.85;\n padding-right: 0.12em;\n color: var(--squisq-page-accent);\n}\n\n/* \u2500\u2500 Footer band \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page-section--footer { text-align: center; }\n\n/* \u2500\u2500 Thin-margin embedding (chat bubbles) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.squisq-page--thin .squisq-page-section-inner { padding-inline: 0; }\n.squisq-page--thin .squisq-page-section { padding-block: 1.5rem; }\n\n/* Thumbnail image mode */\n.squisq-page--thumbnail-images .squisq-page-prose img,\n.squisq-page--thumbnail-images .squisq-page-figure img { max-width: 100px; max-height: 100px; object-fit: cover; }\n\n/* \u2500\u2500 Document variant \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n/* The working-document register (reports, notes, previews). Sizes are in em\n * so one host font-size scales the whole page, and a section's title is\n * sized by its markdown heading level (data-heading-level), never by which\n * section kind happens to carry it. Rules that must beat a page rule keyed\n * on a token attribute repeat .squisq-page for specificity. */\n.squisq-page--document { --squisq-page-divider-color: color-mix(in srgb, var(--squisq-page-text) 14%, transparent); }\n.squisq-page--document .squisq-page-section { padding-block: 0.4em; }\n.squisq-page--document .squisq-page-section .squisq-page-section-inner { max-width: var(--squisq-page-content-max); }\n.squisq-page--document > .squisq-page-section:is([data-heading-level='3'], [data-heading-level='4'], [data-heading-level='5'], [data-heading-level='6']) { padding-top: 1em; }\n/* A top-level heading opens with a hairline set in the text column, like the\n * masthead's, rather than a full-bleed section border. */\n.squisq-page.squisq-page--document > .squisq-page-section:is([data-heading-level='1'], [data-heading-level='2']) { margin-top: 0.8em; }\n.squisq-page.squisq-page--document > .squisq-page-section:is([data-heading-level='1'], [data-heading-level='2']) > .squisq-page-section-inner::before {\n content: '';\n display: block;\n margin-bottom: 1.1em;\n border-top: 1px solid var(--squisq-page-divider-color);\n}\n.squisq-page.squisq-page--document > .squisq-page-section:first-of-type,\n.squisq-page.squisq-page--document > .squisq-page-section--hero + .squisq-page-section { margin-top: 0; }\n.squisq-page.squisq-page--document > .squisq-page-section:first-of-type > .squisq-page-section-inner::before,\n.squisq-page.squisq-page--document > .squisq-page-section--hero + .squisq-page-section > .squisq-page-section-inner::before { display: none; }\n.squisq-page--document > .squisq-page-section:first-of-type { padding-top: 1em; }\n.squisq-page--document > .squisq-page-section:last-of-type { padding-bottom: 1.25em; }\n/* Thin margins hug the host's container, which supplies the outer inset. */\n.squisq-page--document.squisq-page--thin > .squisq-page-section:first-of-type { padding-top: 0; }\n.squisq-page--document.squisq-page--thin > .squisq-page-section:last-of-type { padding-bottom: 0; }\n\n/* Masthead: the cover as a left-aligned document title over a hairline. */\n.squisq-page.squisq-page--document .squisq-page-section--hero { padding-block: 1em 0.6em; }\n.squisq-page.squisq-page--document .squisq-page-hero-body {\n text-align: left;\n padding-bottom: 0.55em;\n border-bottom: 1px solid var(--squisq-page-divider-color);\n}\n.squisq-page.squisq-page--document .squisq-page-hero-title { font-size: 1.6em; line-height: 1.2; letter-spacing: normal; text-transform: none; }\n.squisq-page.squisq-page--document .squisq-page-hero-subtitle { margin: 0.35em 0 0; font-size: 1em; max-width: none; }\n.squisq-page.squisq-page--document .squisq-page-section--hero-media { min-height: 12em; }\n.squisq-page.squisq-page--document .squisq-page-section--hero-media .squisq-page-section-inner { padding-block: 1.25em; }\n.squisq-page.squisq-page--document .squisq-page-section--hero-media .squisq-page-hero-body { border-bottom: none; }\n\n/* One heading scale for prose headings and typed-section titles alike. */\n.squisq-page--document .squisq-page-section-title { font-size: 1.3em; line-height: 1.25; margin: 0 0 0.45em; text-align: left; }\n.squisq-page--document [data-heading-level='1'] .squisq-page-section-title { font-size: 1.6em; }\n.squisq-page--document [data-heading-level='3'] .squisq-page-section-title { font-size: 1.1em; }\n.squisq-page--document :is([data-heading-level='4'], [data-heading-level='5'], [data-heading-level='6']) .squisq-page-section-title { font-size: 1em; }\n.squisq-page--document .squisq-page-prose :is(h1, h2, h3, h4, h5, h6) { line-height: 1.25; margin: 0; }\n.squisq-page--document .squisq-page-prose h1 { font-size: 1.6em; }\n.squisq-page--document .squisq-page-prose h2 { font-size: 1.3em; }\n.squisq-page--document .squisq-page-prose h3 { font-size: 1.1em; }\n.squisq-page--document .squisq-page-prose :is(h4, h5, h6) { font-size: 1em; }\n.squisq-page--document .squisq-page-eyebrow { font-size: 0.72em; letter-spacing: 0.1em; margin-bottom: 0.5em; }\n\n/* Prose */\n.squisq-page--document .squisq-page-prose { font-size: 1em; }\n/* A prose section is a heading wrapper then a body wrapper (.squisq-md each). */\n.squisq-page--document .squisq-page-prose > .squisq-md + .squisq-md { margin-top: 0.4em; }\n.squisq-page--document .squisq-page-prose > .squisq-md > * + * { margin-top: 0.75em; }\n.squisq-page--document .squisq-page-prose > .squisq-md > :last-child { margin-bottom: 0; }\n.squisq-page--document .squisq-page-prose p + p { margin-top: 0.75em; }\n.squisq-page--document .squisq-page-prose li + li { margin-top: 0.25em; }\n.squisq-page--document .squisq-page-prose :is(ul, ol) :is(ul, ol) { margin-top: 0.25em; }\n.squisq-page--document .squisq-page-prose code { font-size: 0.88em; }\n.squisq-page--document .squisq-page-prose pre { padding: 0.7em 0.9em; }\n.squisq-page--document .squisq-md-code-frame { margin: 0.75em 0; }\n.squisq-page--document .squisq-page-prose blockquote { border-left-width: 3px; padding-left: 1em; }\n.squisq-page--document .squisq-page-prose hr { margin-block: 1.25em; }\n.squisq-page--document :is(.squisq-page-prose, .squisq-page-table-section) table { font-size: 0.93em; }\n.squisq-page--document .squisq-page-prose th,\n.squisq-page--document .squisq-page-table th {\n font-family: var(--squisq-page-body-font);\n font-weight: 600;\n padding: 0.45em 0.7em;\n}\n.squisq-page--document .squisq-page-prose td,\n.squisq-page--document .squisq-page-table td { padding: 0.4em 0.7em; }\n.squisq-page--document .squisq-page-rich-content { margin-top: 1em; padding-top: 0.75em; }\n\n/* Typed sections an author asked for, at document scale. */\n.squisq-page--document .squisq-page-section-inner > :first-child { margin-top: 0; }\n.squisq-page--document .squisq-page-stats { justify-content: flex-start; text-align: left; gap: 1.5em; }\n.squisq-page--document .squisq-page-stat { flex: 1 1 10em; }\n.squisq-page.squisq-page--document .squisq-page-stat-value { font-size: 1.9em; }\n.squisq-page--document .squisq-page-stat-title { margin-top: 0.35em; font-size: 1em; }\n.squisq-page--document .squisq-page-stat-body { margin-top: 0.2em; font-size: 0.9em; }\n.squisq-page--document .squisq-page-stat-meta { margin-top: 0.75em; text-align: left; font-size: 0.85em; }\n.squisq-page.squisq-page--document .squisq-page-quote { font-size: 1.15em; line-height: 1.45; }\n.squisq-page.squisq-page--document .squisq-page-quote-figure {\n border: none;\n border-left: 3px solid var(--squisq-page-accent);\n padding: 0 0 0 1em;\n text-align: left;\n}\n.squisq-page--document .squisq-page-quote-attribution { margin-top: 0.6em; font-size: 0.9em; }\n.squisq-page.squisq-page--document .squisq-page-section--quote-band.squisq-page-section--bg-media { min-height: 10em; }\n.squisq-page.squisq-page--document .squisq-page-section--banner.squisq-page-section--bg-media { min-height: 9em; }\n.squisq-page--document .squisq-page-feature { gap: 1.5em; }\n.squisq-page--document .squisq-page-feature-body { font-size: 1em; }\n.squisq-page--document .squisq-page-figure figcaption,\n.squisq-page--document .squisq-page-gallery-caption { margin-top: 0.6em; font-size: 0.85em; }\n.squisq-page--document .squisq-page-gallery { gap: 0.75em; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); }\n.squisq-page--document .squisq-page-callout { padding: 0.85em 1.1em; gap: 1em; border-left-width: 3px; }\n.squisq-page--document .squisq-page-callout-title { font-size: 1.05em; margin-bottom: 0.35em; }\n.squisq-page--document .squisq-page-callout-meta { margin-top: 0.6em; font-size: 0.82em; }\n.squisq-page--document .squisq-page-callout .squisq-page-media-frame { flex-basis: 5.5em; }\n.squisq-page--document .squisq-page-callout .squisq-page-media-frame img { width: 5.5em; height: 5.5em; }\n.squisq-page--document .squisq-page-cards { gap: 0.9em; grid-template-columns: repeat(auto-fit, minmax(12em, 1fr)); }\n.squisq-page--document .squisq-page-card { padding: 0.9em 1em 1em; border-top-width: 3px; }\n.squisq-page--document .squisq-page-card-title { font-size: 1.05em; }\n.squisq-page--document .squisq-page-cards-title { margin-bottom: 0.6em; }\n.squisq-page--document .squisq-page-items { max-width: none; }\n.squisq-page--document .squisq-page-items li { grid-template-columns: 2.2em 1fr; padding: 0.45em 0; font-size: 1em; }\n.squisq-page--document .squisq-page-items li::before { font-size: 1em; }\n.squisq-page--document .squisq-page-section--timeline-rail { padding-block: 0.5em; }\n.squisq-page--document .squisq-page-milestone { grid-template-columns: 7em 1fr; gap: 1.25em; }\n.squisq-page--document .squisq-page-milestone-date { font-size: 1em; }\n.squisq-page--document .squisq-page-milestone-rail { left: calc(7em + 0.62em); top: -0.5em; bottom: -0.5em; }\n.squisq-page--document .squisq-page-milestone-body { padding-left: 1.25em; }\n.squisq-page--document .squisq-page-milestone-footer { font-size: 0.85em; }\n\n/* \u2500\u2500 Reveal animation (progressive enhancement) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n@media (prefers-reduced-motion: no-preference) {\n .squisq-page-reveal { opacity: 0; transform: translateY(14px); transition: opacity 0.55s ease, transform 0.55s ease; }\n .squisq-page-reveal--in { opacity: 1; transform: none; }\n}\n\n/* \u2500\u2500 Responsive \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n@container squisq-page (max-width: 720px) {\n\n.squisq-page-hero-grid { grid-template-columns: 1fr; gap: 1.5rem; }\n.squisq-page-feature { grid-template-columns: 1fr; }\n.squisq-page-feature--media-right .squisq-page-feature-media { order: 0; }\n.squisq-page-stats { flex-direction: column; gap: 1.75rem; }\n.squisq-page-stats > .squisq-page-stat { flex: 0 0 auto; max-width: none; }\n.squisq-page-cards { grid-template-columns: 1fr; }\n.squisq-page-gallery { grid-template-columns: repeat(2, 1fr); }\n.squisq-page-milestone { grid-template-columns: 1fr; gap: 0.5rem; }\n.squisq-page-milestone-rail { display: none; }\n.squisq-page-section-inner { padding-inline: 18px; }\n\n}\n@supports not (container-type: inline-size) {\n @media (max-width: 720px) {\n\n.squisq-page-hero-grid { grid-template-columns: 1fr; gap: 1.5rem; }\n.squisq-page-feature { grid-template-columns: 1fr; }\n.squisq-page-feature--media-right .squisq-page-feature-media { order: 0; }\n.squisq-page-stats { flex-direction: column; gap: 1.75rem; }\n.squisq-page-stats > .squisq-page-stat { flex: 0 0 auto; max-width: none; }\n.squisq-page-cards { grid-template-columns: 1fr; }\n.squisq-page-gallery { grid-template-columns: repeat(2, 1fr); }\n.squisq-page-milestone { grid-template-columns: 1fr; gap: 0.5rem; }\n.squisq-page-milestone-rail { display: none; }\n.squisq-page-section-inner { padding-inline: 18px; }\n\n }\n}\n";
2562
2566
  /**
2563
2567
  * Complete stylesheet for a themed page: a `.squisq-page { … }` variable
2564
2568
  * block followed by the structural CSS. For string-HTML consumers; the
package/dist/doc/index.js CHANGED
@@ -70,8 +70,8 @@ import {
70
70
  validateMarkdownDoc,
71
71
  validateMarkdownSource,
72
72
  writeDashboardLayoutsToFrontmatter
73
- } from "../chunk-JM2QARY2.js";
74
- import "../chunk-ZEONJCP3.js";
73
+ } from "../chunk-VRTXPGP7.js";
74
+ import "../chunk-2PGC4JDT.js";
75
75
  import {
76
76
  ASCII_CHAR_H,
77
77
  ASCII_CHAR_W,
@@ -193,7 +193,7 @@ import {
193
193
  wrapWithPersistentLayers,
194
194
  writeCustomTemplatesToFrontmatter,
195
195
  writeCustomThemesToFrontmatter
196
- } from "../chunk-RMCUZDW5.js";
196
+ } from "../chunk-QOVINAB2.js";
197
197
  import {
198
198
  ASCII_DIAGRAM_FENCE_LANGS,
199
199
  ASCII_TIMELINE_FENCE_LANGS,
@@ -247,7 +247,7 @@ import {
247
247
  isTemplateBlock,
248
248
  resolveTheme,
249
249
  scaledFontSize2 as scaledFontSize
250
- } from "../chunk-Y4D6TDZT.js";
250
+ } from "../chunk-PCCQLD3G.js";
251
251
  import "../chunk-JSGIWW35.js";
252
252
  import "../chunk-L7QZORLB.js";
253
253
  import "../chunk-HUXK7EOT.js";
@@ -1,4 +1,4 @@
1
- import { bk as Theme } from '../Doc-CynsGqL4.js';
1
+ import { bm as Theme } from '../Doc-DmElSKmg.js';
2
2
  import '../types-Be6sBUBx.js';
3
3
 
4
4
  /**
@@ -1,6 +1,6 @@
1
1
  import { E as ExtractedElement } from '../contentExtractor-BNfVJV2U.js';
2
2
  export { C as ComparisonData, D as DateData, a as DefinitionData, b as ExtractionOptions, c as ExtractionResult, d as ExtractionType, F as FactData, I as ImpactLineData, L as ListData, Q as QuoteData, S as StatData, e as extractContent, s as stripMarkdown } from '../contentExtractor-BNfVJV2U.js';
3
- import { r as ColorScheme, A as AccentImage, be as TemplateBlock } from '../Doc-CynsGqL4.js';
3
+ import { r as ColorScheme, A as AccentImage, bg as TemplateBlock } from '../Doc-DmElSKmg.js';
4
4
  import '../types-Be6sBUBx.js';
5
5
 
6
6
  /**
@@ -1,8 +1,8 @@
1
- import { a as ImageEditDoc, b as ImageEditLayer } from '../ImageEditDoc-BVZe_5y4.js';
2
- export { E as EditorLayerMeta, I as ImageEditCanvas, c as ImageEditLayerKind, d as ImageEditMeta } from '../ImageEditDoc-BVZe_5y4.js';
1
+ import { a as ImageEditDoc, b as ImageEditLayer } from '../ImageEditDoc-Dm_BETxC.js';
2
+ export { E as EditorLayerMeta, I as ImageEditCanvas, c as ImageEditLayerKind, d as ImageEditMeta } from '../ImageEditDoc-Dm_BETxC.js';
3
3
  import { C as ContentContainer } from '../ContentContainer-B2w9sUoL.js';
4
4
  import { V as Version, C as CoalesceOptions, P as PrunePolicy } from '../types-8QjefM9J.js';
5
- import '../Doc-CynsGqL4.js';
5
+ import '../Doc-DmElSKmg.js';
6
6
  import '../types-Be6sBUBx.js';
7
7
 
8
8
  /**
package/dist/index.d.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  export { B as BoundingBox, C as Coordinates } from './Types-sh2VRxfo.js';
2
- export { A as AccentImage, a as AccentPosition, b as AmbientGradientConfig, c as Animation, d as AnimationType, e as AreaChartInput, f as AudioBookmark, g as AudioSegment, h as AudioTimingData, i as AudioTrack, B as BarChartInput, j as BigTextInput, k as Block, l as BlockConnection, m as BorderStyle, C as CaptionPhrase, n as CaptionTrack, o as CaptionWord, p as ChartBaseFields, q as ChartTemplateInput, r as ColorScheme, s as ColumnChartInput, t as ComparisonBarInput, u as ContentBlockInput, v as CornerBrandingConfig, w as CustomTemplateDefinition, x as CustomTemplateLayer, y as CustomTemplateValidationError, z as CustomTemplateValidationResult, D as DARK_SURFACE, E as DEFAULT_DOC_FONT, F as DEFAULT_TITLE_FONT, G as DataTableInput, H as DateEventInput, I as DeepPartial, J as DefinitionCardInput, K as DiagramBlockInput, L as DiagramEdgeAnchor, M as DiagramTemplateEdge, N as DiagramTemplateNode, O as Doc, P as DocBlock, Q as DocDiagnostic, R as DonutChartInput, S as DrawingBlockInput, T as FRONTMATTER_CUSTOM_TEMPLATES_KEY, U as FRONTMATTER_CUSTOM_THEMES_KEY, V as FactCardInput, W as FontFamily, X as FontFamilyKind, Y as FullBleedQuoteInput, Z as GradientBackgroundConfig, _ as ImageBackgroundConfig, $ as ImageLayer, a0 as ImageTreatment, a1 as ImageWithCaptionInput, a2 as LIGHT_SURFACE, a3 as Layer, a4 as LayerRepeat, a5 as LayoutHints, a6 as LeftFeatureInput, a7 as LineChartInput, a8 as LinearGradient, a9 as ListBlockInput, aa as MapBlockInput, ab as MapLayer, ac as MapMarker, ad as MapTileStyle, ae as MarkerStyle, af as MediaClip, ag as MediaCrop, ah as MediaCut, ai as MediaEdits, aj as MediaScheduleOptions, ak as MermaidLayer, al as PAGE_ACCENT_STRATEGIES, am as PAGE_BACKGROUNDS, an as PAGE_BACKGROUND_RHYTHMS, ao as PAGE_DESIGN_FAMILIES, ap as PAGE_DIVIDERS, aq as PAGE_EMPHASES, ar as PAGE_EYEBROWS, as as PAGE_HEADING_CASES, at as PAGE_HEADING_SCALES, au as PAGE_HEADING_UNDERLINES, av as PAGE_HERO_STYLES, aw as PAGE_IMAGE_FRAMINGS, ax as PAGE_NUMERAL_STYLES, ay as PAGE_PATTERNS, az as PAGE_QUOTE_MARKS, aA as PAGE_SECTION_KINDS, aB as PAGE_SECTION_SPACINGS, aC as PAGE_SHADOWS, aD as PageAccentRotation, aE as PageBackground, aF as PageDesignFamily, aG as PageEmphasis, aH as PageHeadingTreatment, aI as PageSectionKind, aJ as PageSectionOverride, aK as PageTokens, aL as PathLayer, aM as PatternBackgroundConfig, aN as PersistentLayer, aO as PersistentLayerConfig, aP as PersistentLayerTemplate, aQ as PersistentLayerTemplateConfig, aR as PersistentLayerTemplateType, aS as PhotoGridInput, aT as PieChartInput, aU as PipStyle, aV as Position, aW as ProgressIndicatorConfig, aX as PromotedBodyAnnotation, aY as PullQuoteInput, aZ as QuoteBlockInput, a_ as RawLayersInput, a$ as RenderStyle, b0 as RightFeatureInput, b1 as ScatterChartInput, b2 as ScheduledClip, b3 as SectionHeaderInput, b4 as ShapeFilter, b5 as ShapeLayer, b6 as ShapePattern, b7 as SolidBackgroundConfig, b8 as StartBlockConfig, b9 as StatHighlightInput, ba as SurfaceScheme, bb as THEME_SCHEMA_VERSION, bc as TableLayer, bd as TableLayerStyle, be as TemplateBlock, bf as TemplateContext, bg as TemplateFunction, bh as TemplateRegistry, bi as TextLayer, bj as TextStyle, bk as Theme, bl as ThemeColorPalette, bm as ThemeColorScheme, bn as ThemePageStyle, bo as ThemeRegistry, bp as ThemeSchemaVersion, bq as ThemeSeedColors, br as ThemeStyle, bs as ThemeTypography, bt as TimelineBlockInput, bu as TimelineTemplateEvent, bv as TimelineTemplateLink, bw as TimelineTemplateTrack, bx as TitleBlockInput, by as TitleCaptionConfig, bz as TranscriptBlockInput, bA as TreeBlockInput, bB as TreeLayer, bC as TreeLayerItem, bD as TreeLayerStyle, bE as TreeTemplateItem, bF as TwoColumnInput, bG as VIEWPORT_PRESETS, bH as VideoLayer, bI as VideoPipPosition, bJ as VideoPipShape, bK as VideoPipSize, bL as VideoPlacement, bM as VideoPresentation, bN as VideoPullQuoteInput, bO as VideoWithCaptionInput, bP as ViewportConfig, bQ as ViewportOrientation, bR as ViewportPreset, bS as VignetteConfig, bT as applySurface, bU as calculateDuration, bV as calculateFontScale, bW as createTemplateContext, bX as createTheme, bY as createThemeRegistry, bZ as getAspectRatioString, b_ as getBlockAtTime, b$ as getCaptionAtTime, c0 as getDocPlaybackDuration, c1 as getLayoutHints, c2 as getSafeTextBounds, c3 as getSegmentAtTime, c4 as getTwoColumnPositions, c5 as getViewport, c6 as getViewportOrientation, c7 as isCustomTemplateDefinition, c8 as isPersistentLayerTemplate, c9 as isTemplateBlock, ca as layoutScaledFontSize, cb as resolveMediaSchedule, cc as scaledFontSize, cd as scheduleMediaClip, ce as validateCustomTemplateDefinition } from './Doc-CynsGqL4.js';
2
+ export { A as AccentImage, a as AccentPosition, b as AmbientGradientConfig, c as Animation, d as AnimationType, e as AreaChartInput, f as AudioBookmark, g as AudioSegment, h as AudioTimingData, i as AudioTrack, B as BarChartInput, j as BigTextInput, k as Block, l as BlockConnection, m as BorderStyle, C as CaptionPhrase, n as CaptionTrack, o as CaptionWord, p as ChartBaseFields, q as ChartTemplateInput, r as ColorScheme, s as ColumnChartInput, t as ComparisonBarInput, u as ContentBlockInput, v as CornerBrandingConfig, w as CustomTemplateDefinition, x as CustomTemplateLayer, y as CustomTemplateValidationError, z as CustomTemplateValidationResult, D as DARK_SURFACE, E as DEFAULT_DOC_FONT, F as DEFAULT_TITLE_FONT, G as DataTableInput, H as DateEventInput, I as DeepPartial, J as DefinitionCardInput, K as DiagramBlockInput, L as DiagramEdgeAnchor, M as DiagramTemplateEdge, N as DiagramTemplateNode, O as Doc, P as DocBlock, Q as DocDiagnostic, R as DonutChartInput, S as DrawingBlockInput, T as FRONTMATTER_CUSTOM_TEMPLATES_KEY, U as FRONTMATTER_CUSTOM_THEMES_KEY, V as FactCardInput, W as FontFamily, X as FontFamilyKind, Y as FullBleedQuoteInput, Z as GradientBackgroundConfig, _ as ImageBackgroundConfig, $ as ImageLayer, a0 as ImageTreatment, a1 as ImageWithCaptionInput, a2 as LIGHT_SURFACE, a3 as Layer, a4 as LayerRepeat, a5 as LayoutHints, a6 as LeftFeatureInput, a7 as LineChartInput, a8 as LinearGradient, a9 as ListBlockInput, aa as MapBlockInput, ab as MapLayer, ac as MapMarker, ad as MapTileStyle, ae as MarkerStyle, af as MediaClip, ag as MediaCrop, ah as MediaCut, ai as MediaEdits, aj as MediaScheduleOptions, ak as MermaidLayer, al as PAGE_ACCENT_STRATEGIES, am as PAGE_BACKGROUNDS, an as PAGE_BACKGROUND_RHYTHMS, ao as PAGE_DESIGN_FAMILIES, ap as PAGE_DIVIDERS, aq as PAGE_EMPHASES, ar as PAGE_EYEBROWS, as as PAGE_HEADING_CASES, at as PAGE_HEADING_SCALES, au as PAGE_HEADING_UNDERLINES, av as PAGE_HERO_STYLES, aw as PAGE_IMAGE_FRAMINGS, ax as PAGE_NUMERAL_STYLES, ay as PAGE_PATTERNS, az as PAGE_QUOTE_MARKS, aA as PAGE_SECTION_KINDS, aB as PAGE_SECTION_SPACINGS, aC as PAGE_SHADOWS, aD as PAGE_VARIANTS, aE as PageAccentRotation, aF as PageBackground, aG as PageDesignFamily, aH as PageEmphasis, aI as PageHeadingTreatment, aJ as PageSectionKind, aK as PageSectionOverride, aL as PageTokens, aM as PageVariant, aN as PathLayer, aO as PatternBackgroundConfig, aP as PersistentLayer, aQ as PersistentLayerConfig, aR as PersistentLayerTemplate, aS as PersistentLayerTemplateConfig, aT as PersistentLayerTemplateType, aU as PhotoGridInput, aV as PieChartInput, aW as PipStyle, aX as Position, aY as ProgressIndicatorConfig, aZ as PromotedBodyAnnotation, a_ as PullQuoteInput, a$ as QuoteBlockInput, b0 as RawLayersInput, b1 as RenderStyle, b2 as RightFeatureInput, b3 as ScatterChartInput, b4 as ScheduledClip, b5 as SectionHeaderInput, b6 as ShapeFilter, b7 as ShapeLayer, b8 as ShapePattern, b9 as SolidBackgroundConfig, ba as StartBlockConfig, bb as StatHighlightInput, bc as SurfaceScheme, bd as THEME_SCHEMA_VERSION, be as TableLayer, bf as TableLayerStyle, bg as TemplateBlock, bh as TemplateContext, bi as TemplateFunction, bj as TemplateRegistry, bk as TextLayer, bl as TextStyle, bm as Theme, bn as ThemeColorPalette, bo as ThemeColorScheme, bp as ThemePageStyle, bq as ThemeRegistry, br as ThemeSchemaVersion, bs as ThemeSeedColors, bt as ThemeStyle, bu as ThemeTypography, bv as TimelineBlockInput, bw as TimelineTemplateEvent, bx as TimelineTemplateLink, by as TimelineTemplateTrack, bz as TitleBlockInput, bA as TitleCaptionConfig, bB as TranscriptBlockInput, bC as TreeBlockInput, bD as TreeLayer, bE as TreeLayerItem, bF as TreeLayerStyle, bG as TreeTemplateItem, bH as TwoColumnInput, bI as VIEWPORT_PRESETS, bJ as VideoLayer, bK as VideoPipPosition, bL as VideoPipShape, bM as VideoPipSize, bN as VideoPlacement, bO as VideoPresentation, bP as VideoPullQuoteInput, bQ as VideoWithCaptionInput, bR as ViewportConfig, bS as ViewportOrientation, bT as ViewportPreset, bU as VignetteConfig, bV as applySurface, bW as calculateDuration, bX as calculateFontScale, bY as createTemplateContext, bZ as createTheme, b_ as createThemeRegistry, b$ as getAspectRatioString, c0 as getBlockAtTime, c1 as getCaptionAtTime, c2 as getDocPlaybackDuration, c3 as getLayoutHints, c4 as getSafeTextBounds, c5 as getSegmentAtTime, c6 as getTwoColumnPositions, c7 as getViewport, c8 as getViewportOrientation, c9 as isCustomTemplateDefinition, ca as isPersistentLayerTemplate, cb as isTemplateBlock, cc as layoutScaledFontSize, cd as resolveMediaSchedule, ce as scaledFontSize, cf as scheduleMediaClip, cg as validateCustomTemplateDefinition } from './Doc-DmElSKmg.js';
3
3
  export { AVAILABLE_FONT_STACKS, CompileOptions, ContrastPreset, DocSchemaIssue, FONT_FALLBACKS, FontStack, MermaidThemeVariables, PipStyleVars, STARTER_THEME, ValidationError, ValidationResult, accentToColorScheme, assertDocSchema, assertTheme, buildGoogleFontsUrl, buildMermaidThemeVariables, compileTheme, contrastRatio, defaultPageStyle, deriveColorPalette, deriveScale, fontStack, getFontStack, guessFontFallback, hexHueDegrees, isHex, matchFontFamily, oklchDarken, oklchLighten, oklchSetChroma, parseTheme, pickContrastingText, pipStyleVars, relativeLuminance, resolveFontFamily, serializeTheme, validateDocSchema, validateTheme, withAlpha } from './schemas/index.js';
4
4
  export { D as DEFAULT_MARKDOWN_SAFETY_LIMITS, a as DEFAULT_TRANSITION_DURATION_SECONDS, H as HeadingAttributes, b as HeadingTemplateAnnotation, c as HtmlComment, d as HtmlElement, e as HtmlNode, f as HtmlText, M as MarkdownBlockNode, g as MarkdownBlockquote, h as MarkdownBreak, i as MarkdownCodeBlock, j as MarkdownContainerDirective, k as MarkdownDefinitionDescription, l as MarkdownDefinitionList, m as MarkdownDefinitionTerm, n as MarkdownDocument, o as MarkdownEmphasis, p as MarkdownFootnoteDefinition, q as MarkdownFootnoteReference, r as MarkdownHeading, s as MarkdownHtmlBlock, t as MarkdownImage, u as MarkdownImageReference, v as MarkdownInlineCode, w as MarkdownInlineHtml, x as MarkdownInlineIcon, y as MarkdownInlineMath, z as MarkdownInlineNode, A as MarkdownLeafDirective, B as MarkdownLimitError, C as MarkdownLink, E as MarkdownLinkDefinition, F as MarkdownLinkReference, G as MarkdownList, I as MarkdownListItem, J as MarkdownMathBlock, K as MarkdownMention, L as MarkdownNode, N as MarkdownParagraph, O as MarkdownPoint, P as MarkdownSafetyLimits, Q as MarkdownSourcePosition, R as MarkdownStrikethrough, S as MarkdownStrong, T as MarkdownSubscript, U as MarkdownSuperscript, V as MarkdownTable, W as MarkdownTableCell, X as MarkdownTableRow, Y as MarkdownText, Z as MarkdownTextDirective, _ as MarkdownThematicBreak, $ as ParseOptions, a0 as StringifyOptions, a1 as TRANSITION_DIRECTIONS, a2 as TRANSITION_TYPES, a3 as Transition, a4 as TransitionDirection, a5 as TransitionType, a6 as assertMarkdownDocumentWithinLimits, a7 as assertMarkdownSourceWithinLimits, a8 as isTransitionType, a9 as normalizeTransitionDirection, aa as normalizeTransitionType, ab as resolveBlockTransition, ac as resolveMarkdownSafetyLimits, ad as resolveTransitionDuration } from './types-Be6sBUBx.js';
5
- export { D as DEFAULT_THEME, a as DEFAULT_THEME_ID, T as THEMES, g as getAvailableThemes, b as getThemeSummaries, r as resolveTheme } from './themeLibrary-z7t3x5CU.js';
5
+ export { D as DEFAULT_THEME, a as DEFAULT_THEME_ID, T as THEMES, g as getAvailableThemes, b as getThemeSummaries, r as resolveTheme } from './themeLibrary-ChnTImby.js';
6
6
  export { M as MediaEntry, a as MediaProvider } from './MediaProvider-wpSe21B3.js';
7
- export { E as EditorLayerMeta, I as ImageEditCanvas, a as ImageEditDoc, b as ImageEditLayer, c as ImageEditLayerKind, d as ImageEditMeta } from './ImageEditDoc-BVZe_5y4.js';
7
+ export { E as EditorLayerMeta, I as ImageEditCanvas, a as ImageEditDoc, b as ImageEditLayer, c as ImageEditLayerKind, d as ImageEditMeta } from './ImageEditDoc-Dm_BETxC.js';
8
8
  export { ASCII_CHAR_H, ASCII_CHAR_W, ASCII_DIAGRAM_FENCE_LANGS, ASCII_TIMELINE_FENCE_LANGS, AccentLayout, AsciiDiagram, AsciiDiagramDetection, AsciiDiagramEdge, AsciiDiagramNode, AsciiTimeline, AsciiTimelineDetection, AsciiTimelineEvent, AsciiTimelineLink, AsciiTimelineMarker, AsciiTimelineSide, AsciiTimelineStats, AsciiTimelineStyle, AsciiTimelineTrack, AudioSegmentTiming, BASE_INPUT_DESCRIPTORS, BLOCK_MEDIA_LAYOUT_POLICIES, BUILTIN_DASHBOARD_LAYOUTS, BlockLayerMaterialization, BlockMediaLayoutPolicy, BuildPreviewDocOptions, BuiltInTemplateName, CONTAINER_TEMPLATES, COVER_SLIDE_FRONTMATTER_KEYS, COVER_SLIDE_TEMPLATE_OPTIONS, ClipBox, ConnectorAnchor, ConnectorPort, ConnectorRouting, ConnectorSnapPoint, CoverBlockInput, CoverSlidePlayback, CoverSlideSettings, CoverSlideTemplate, CoverSlideTemplateOption, DASHBOARD_AUTO_LAYOUT_ID, DASHBOARD_FRONTMATTER_KEYS, DASHBOARD_STYLES, DASHBOARD_STYLE_IDS, DASHBOARD_ZOOM_LEVELS, DATA_FILE_EXTENSIONS, DEFAULT_COVER_SLIDE_SETTINGS, DEFAULT_DASHBOARD_SETTINGS, DEFAULT_DASHBOARD_STYLE, DEFAULT_LAYOUT, DIAGRAM_LABEL_HORIZONTAL_PADDING, DIAGRAM_LABEL_LINE_HEIGHT, DIAGRAM_LABEL_MIN_FONT_SIZE, DIAGRAM_LABEL_VERTICAL_PADDING, DashboardCell, DashboardCellChrome, DashboardCellDefinition, DashboardCellFrame, DashboardDiagnostic, DashboardLayoutDefinition, DashboardLayoutSummary, DashboardLayoutValidationError, DashboardLayoutValidationResult, DashboardMaterialization, DashboardRectPct, DashboardSettings, DashboardSettingsOverrides, DashboardStyleId, DashboardStyleSummary, DashboardTitle, DashboardTitleSlotDefinition, DashboardZoomCandidate, DashboardZoomLevel, DashboardZoomMode, DataFenceParseResult, DataSourceReadOptions, DataSourceReader, DataSourceStats, DataSourceTable, DeriveTemplateInputsOptions, DetectAsciiTimelineOptions, DiagramEdge, DiagramLabelFit, DiagramLayout, DiagramLayoutOptions, DiagramNodePosition, DrawingConnector, DrawingLayout, DrawingLayoutOptions, DrawingShape, DrawingShapeKind, EmbeddedVideo, ExpandDocBlocksOptions, ExtractedTableData, FRONTMATTER_DASHBOARD_LAYOUTS_KEY, FirstImage, Flashcard, FlashcardChoice, FlashcardDeck, FlashcardDiagnostic, FlashcardDiagnosticCode, FlashcardFace, FlashcardKind, FlashcardSourceMode, InputCoercion, LayerMaterializationDiagnostic, LayerMaterializationFailureMode, LayerMaterializationSource, LayoutLayerDefaults, LayoutLayersResult, MAX_COVER_SLIDE_DURATION_SECONDS, MarkdownToDocOptions, MarkdownValidationResult, MaterializeBlockLayersOptions, MaterializeDashboardOptions, MaterializeFlashcardsOptions, NarrationResolution, NativeMediaLayout, NoMediaLayout, PAGE_BASE_CSS, PATH_SHAPE_KINDS, PageSectionContext, PageSectionDraft, RenderAsciiDiagramOptions, RenderAsciiTimelineOptions, RenderTreeOptions, RepairResult, ResolveDataReferencesOptions, ResolvedDashboardCell, ResolvedDataReferences, ResolvedPageBlock, RichListItem, RuntimeTemplateRegistry, SHAPE_NAMES, SectionExtractor, SupplementalMediaLayoutVariant, SupplementalMediaShape, SupplementalMediaVariantMatrix, TABLE_FED_TEMPLATES, TEMPLATE_AUTHORING_METADATA, TEMPLATE_INPUT_DESCRIPTORS, TEMPLATE_METADATA, TREE_FENCE_LANGS, TemplateAuthoringMetadata, TemplateAuthoringRole, TemplateBodyPolicy, TemplateInputDescriptor, TemplateMediaOwnership, TemplateMetadata, TemplateParamFinding, Tree, TreeDetection, TreeItem, TreeNode, UnconsumedMediaBehavior, ValidateOptions, adjustY, anchorPoint, applyNarrationTiming, applyRenderStyleToLayers, asciiCellToCanvas, asciiDiagramFromBlocks, asciiDiagramFromTemplateData, asciiDiagramToTemplateData, asciiTimelineToTemplateData, autoTemplatePreservesContent, bigText, buildDashboardCellChrome, buildPageCss, buildPageCssVars, buildPreviewDoc, buildRegistry, canvasToAsciiCell, chooseDashboardLayout, clipEndpoints, clipPoint, coerceTemplateParams, comparisonBar, composeDashboardLayers, computeDiagramLayout, computeDrawingLayout, computeLayoutLayers, connectorPath, contentBlock, countBlocks, coverBlock, createAccentLayers, cssFilterForTreatment, dashboardCanvasFill, dashboardCellAccent, dataSidecarPrefix, dataTable, dateEvent, definitionCard, deriveTemplateInputs, desiredCellZoom, detectAsciiDiagram, detectAsciiTimeline, detectTree, diagramBlock, docToMarkdown, documentTitleFromFileName, drawingBlock, expandCoverBlock, expandDocBlocks, expandPersistentLayers, extractBlockquoteText, extractBodyPlainText, extractEmbeddedVideos, extractFirstEmbeddedVideo, extractFirstImage, extractImages, extractListItems, extractRichListItems, extractTableData, extractTableFromContents, factCard, fallbackBlockLayers, findFirstList, findFirstTable, fitBigTextSize, fitDiagramLabel, flattenBlocks, flattenRenderableBlocks, fullBleedQuote, getAccentLayout, getAnimationProgress, getAnimationStyle, getAvailableTemplates, getBlockBodyText, getBlockDepth, getBlockMediaLayoutPolicy, getDashboardLayoutSummaries, getDefaultAnimation, getDefaultAnimationDuration, getOverlayOpacity, getPersistentLayersFromTheme, getPinnedBlockMeta, getTemplateHint, getThemeFont, getTransitionClass, hasTemplate, imageWithCaption, isAsciiDiagramFence, isAsciiTimelineFence, isContainerTemplate, isDataFence, isDataFilePath, isEligibleAsciiFenceLang, isEligibleAsciiTimelineFenceLang, isEligibleTreeFenceLang, isExplicitDiagramLang, isExplicitTimelineLang, isExplicitTreeLang, isRepairableDiagram, isShapeName, isTemplatedPageBlock, isTreeFence, isWrappedFlowTimelineSource, layoutBlock, layoutCapacity, leftFeature, lineStyleDasharray, lintTemplateParams, listBlock, listDashboardLayouts, mapBlock, markdownBlockSeparatorLines, markdownToDoc, markerPath, materializeBlockLayers, materializeDashboard, materializeFlashcards, nearestSnapPoint, normalizeDashboardZoom, normalizeShapeKind, pageStyleDataAttributes, parseAsciiDiagram, parseAsciiTimeline, parseAsciiTimelineWithStats, parseDataFence, parseTree, parseWrappedFlowTimeline, parseYamlSubset, photoGrid, pullQuote, quoteBlock, readCustomTemplatesFromFrontmatter, readCustomThemesFromFrontmatter, readDashboardLayoutsFromFrontmatter, renderAsciiDiagram, renderAsciiTimeline, renderMarkdownBlocksHtml, renderTree, repairAsciiDiagram, replaceDataFence, resolveAudioMapping, resolveColorScheme, resolveCoverSlideSettings, resolveDashboardLayoutDefinition, resolveDashboardSettings, resolveDashboardStyleId, resolveDashboardZooms, resolveDataReferences, resolveFlashcardMarker, resolveLayoutCells, resolvePageBlock, resolvePersistentLayers, resolveTemplateName, resolveThemeForDoc, rightFeature, scaleAnimationDuration, scoreTextSimilarity, sectionExtractors, sectionHeader, shapePath, shouldUseShadow, snapEndpoints, snapPoints, statHighlight, stripBlockBackdropLayer, stripsBlockBackdrop, templateRegistry, themeWantsAmbientMotion, themedEntrance, themedFontSize, themedImageTreatment, themedScrim, themedSurfaceGradient, timelineBlock, titleBlock, transposeCells, treeBlock, treeFromMarkdownList, treeFromTemplateData, treeToTemplateData, twoColumn, validateDashboardLayoutDefinition, validateMarkdownDoc, validateMarkdownSource, videoPullQuote, videoWithCaption, wrapWithPersistentLayers, writeCustomTemplatesToFrontmatter, writeCustomThemesToFrontmatter, writeDashboardLayoutsToFrontmatter } from './doc/index.js';
9
- export { M as MaterializePageSectionOptions, a as MaterializePageSectionsOptions, P as PageMedia, b as PageRichText, c as PageSection, d as PageSectionDiagnostic, e as PageSectionItem, f as PageSectionMaterialization, g as PageSectionSource, h as PageSpatialKind, i as PageTransformHints, m as materializePageSection, j as materializePageSections, r as resolvePageStyle } from './materializePageSection-CAJoa8fh.js';
9
+ export { M as MaterializePageSectionOptions, a as MaterializePageSectionsOptions, P as PageMedia, b as PageRichText, c as PageSection, d as PageSectionDiagnostic, e as PageSectionItem, f as PageSectionMaterialization, g as PageSectionSource, h as PageSpatialKind, i as PageTransformHints, m as materializePageSection, j as materializePageSections, r as resolvePageStyle } from './materializePageSection-BfttC9Zj.js';
10
10
  export { calculateBearing, decodeGeohash, encodeGeohash, geohashOverlapsBounds, geohashToHierarchicalPath, getGeohash4Neighbors, getGeohashPath, getGeohashPrefix, getNeighbors, haversineDistance } from './spatial/index.js';
11
11
  export { LocalForageAdapter, LocalForageAdapterOptions, LocalStorageAdapter, MemoryStorageAdapter, ScopedContentContainer, StorageAdapter, createMediaProviderFromContainer, scopeContainer } from './storage/index.js';
12
12
  export { C as ContentContainer, a as ContentEntry, M as MemoryContentContainer, f as findDocumentPath } from './ContentContainer-B2w9sUoL.js';
package/dist/index.js CHANGED
@@ -27,7 +27,7 @@ import {
27
27
  recordSlideShown,
28
28
  traceWordPosAt,
29
29
  vadStep
30
- } from "./chunk-5FBI3ZW4.js";
30
+ } from "./chunk-QDA7NXDO.js";
31
31
  import {
32
32
  fenceRendererLangs
33
33
  } from "./chunk-PGI7HSWE.js";
@@ -65,7 +65,7 @@ import {
65
65
  getTransformStyleSummaries,
66
66
  resolveTransformStyle,
67
67
  transformNarratedSegment
68
- } from "./chunk-KFZOCWPK.js";
68
+ } from "./chunk-CCRBHFNO.js";
69
69
  import {
70
70
  extractContent,
71
71
  mapElementToBlock,
@@ -103,7 +103,7 @@ import {
103
103
  resolveRef,
104
104
  setByPointer,
105
105
  toPointer
106
- } from "./chunk-VU4T74LI.js";
106
+ } from "./chunk-DTM4FG7S.js";
107
107
  import {
108
108
  IMAGE_EDIT_ASSETS_PREFIX,
109
109
  IMAGE_EDIT_DEFAULT_BASENAME,
@@ -154,7 +154,7 @@ import {
154
154
  pipStyleVars,
155
155
  serializeTheme,
156
156
  validateDocSchema
157
- } from "./chunk-JJO6JFNZ.js";
157
+ } from "./chunk-B5STNW6C.js";
158
158
  import {
159
159
  calculateBearing,
160
160
  decodeGeohash,
@@ -239,7 +239,7 @@ import {
239
239
  validateMarkdownDoc,
240
240
  validateMarkdownSource,
241
241
  writeDashboardLayoutsToFrontmatter
242
- } from "./chunk-JM2QARY2.js";
242
+ } from "./chunk-VRTXPGP7.js";
243
243
  import {
244
244
  buildNarrationScript,
245
245
  buildNarrationTimingJson,
@@ -249,7 +249,7 @@ import {
249
249
  wordIndexAtChar,
250
250
  wordIndexAtTime,
251
251
  wordPosAtExpectedSyllables
252
- } from "./chunk-ZEONJCP3.js";
252
+ } from "./chunk-2PGC4JDT.js";
253
253
  import {
254
254
  ASCII_CHAR_H,
255
255
  ASCII_CHAR_W,
@@ -371,7 +371,7 @@ import {
371
371
  wrapWithPersistentLayers,
372
372
  writeCustomTemplatesToFrontmatter,
373
373
  writeCustomThemesToFrontmatter
374
- } from "./chunk-RMCUZDW5.js";
374
+ } from "./chunk-QOVINAB2.js";
375
375
  import {
376
376
  ASCII_DIAGRAM_FENCE_LANGS,
377
377
  ASCII_TIMELINE_FENCE_LANGS,
@@ -452,6 +452,7 @@ import {
452
452
  PAGE_SECTION_KINDS,
453
453
  PAGE_SECTION_SPACINGS,
454
454
  PAGE_SHADOWS,
455
+ PAGE_VARIANTS,
455
456
  THEMES,
456
457
  THEME_SCHEMA_VERSION,
457
458
  VIEWPORT_PRESETS,
@@ -493,7 +494,7 @@ import {
493
494
  validateCustomTemplateDefinition,
494
495
  validateTheme,
495
496
  withAlpha
496
- } from "./chunk-Y4D6TDZT.js";
497
+ } from "./chunk-PCCQLD3G.js";
497
498
  import "./chunk-JSGIWW35.js";
498
499
  import "./chunk-L7QZORLB.js";
499
500
  import {
@@ -696,6 +697,7 @@ export {
696
697
  PAGE_SECTION_KINDS,
697
698
  PAGE_SECTION_SPACINGS,
698
699
  PAGE_SHADOWS,
700
+ PAGE_VARIANTS,
699
701
  PATH_SHAPE_KINDS,
700
702
  PROOF_DIALECTS,
701
703
  PROOF_FRONTMATTER_KEYS,
@@ -1,4 +1,4 @@
1
- import { bk as Theme, ba as SurfaceScheme } from '../Doc-CynsGqL4.js';
1
+ import { bm as Theme, bc as SurfaceScheme } from '../Doc-DmElSKmg.js';
2
2
  import '../types-Be6sBUBx.js';
3
3
 
4
4
  /**
@@ -15,10 +15,10 @@ import {
15
15
  resolveRef,
16
16
  setByPointer,
17
17
  toPointer
18
- } from "../chunk-VU4T74LI.js";
19
- import "../chunk-JJO6JFNZ.js";
18
+ } from "../chunk-DTM4FG7S.js";
19
+ import "../chunk-B5STNW6C.js";
20
20
  import "../chunk-YNO6JV36.js";
21
- import "../chunk-Y4D6TDZT.js";
21
+ import "../chunk-PCCQLD3G.js";
22
22
  import "../chunk-JSGIWW35.js";
23
23
  import "../chunk-L7QZORLB.js";
24
24
  import "../chunk-4VOD55SX.js";
@@ -1,4 +1,4 @@
1
- import { k as Block, aI as PageSectionKind, aG as PageEmphasis, bm as ThemeColorScheme, aE as PageBackground, bk as Theme, bP as ViewportConfig, w as CustomTemplateDefinition, b8 as StartBlockConfig, O as Doc, bn as ThemePageStyle } from './Doc-CynsGqL4.js';
1
+ import { k as Block, aJ as PageSectionKind, aH as PageEmphasis, bo as ThemeColorScheme, aF as PageBackground, bm as Theme, bR as ViewportConfig, w as CustomTemplateDefinition, aM as PageVariant, ba as StartBlockConfig, O as Doc, bp as ThemePageStyle } from './Doc-DmElSKmg.js';
2
2
  import { M as MarkdownBlockNode } from './types-Be6sBUBx.js';
3
3
 
4
4
  /**
@@ -201,6 +201,8 @@ interface MaterializePageSectionOptions {
201
201
  * kept regardless.
202
202
  */
203
203
  widgetFenceLangs?: readonly string[];
204
+ /** Page rendition register (default `'page'`). See `PageVariant`. */
205
+ variant?: PageVariant;
204
206
  }
205
207
  /** Doc-level options. */
206
208
  interface MaterializePageSectionsOptions extends MaterializePageSectionOptions {
@@ -215,10 +217,11 @@ interface MaterializePageSectionsOptions extends MaterializePageSectionOptions {
215
217
  }
216
218
  /**
217
219
  * Resolve the effective page style for a theme: explicit `theme.pageStyle`
218
- * wins, else a derived default. Transform hints overlay spacing.
220
+ * wins, else a derived default. Transform hints overlay spacing; the
221
+ * `document` variant overlays its flat, unornamented art direction.
219
222
  * Never returns undefined.
220
223
  */
221
- declare function resolvePageStyle(theme?: Theme, hints?: PageTransformHints): ThemePageStyle;
224
+ declare function resolvePageStyle(theme?: Theme, hints?: PageTransformHints, variant?: PageVariant): ThemePageStyle;
222
225
  /**
223
226
  * Materialize one block in isolation. Sequence-scoped art direction
224
227
  * (background rhythm, accent rotation, emphasis curve) does not apply —
@@ -1,5 +1,5 @@
1
- import { ah as MediaCut, O as Doc, af as MediaClip, cf as MediaFxOpId, cg as MediaFxChain } from '../Doc-CynsGqL4.js';
2
- export { ch as MEDIA_EDIT_PARAMS, ci as MEDIA_FX_ORDER, cj as MEDIA_FX_SPECS, ag as MediaCrop, ck as MediaEditParamKey, cl as MediaEditParamValues, ai as MediaEdits, cm as MediaFxOp, cn as formatMediaNumber, co as hasRenderableFx, cp as mediaEditHtmlAttribute, cq as mediaEditValuesFromAttributes, cr as mediaEditValuesFromParams, cs as mediaRenderKey, ct as normalizeMediaCrop, cu as normalizeMediaCuts, cv as parseMediaCrop, cw as parseMediaCuts, cx as parseMediaEdits, cy as parseMediaFx, cz as serializeMediaCrop, cA as serializeMediaCuts, cB as serializeMediaEdits, cC as serializeMediaFx } from '../Doc-CynsGqL4.js';
1
+ import { ah as MediaCut, O as Doc, af as MediaClip, ch as MediaFxOpId, ci as MediaFxChain } from '../Doc-DmElSKmg.js';
2
+ export { cj as MEDIA_EDIT_PARAMS, ck as MEDIA_FX_ORDER, cl as MEDIA_FX_SPECS, ag as MediaCrop, cm as MediaEditParamKey, cn as MediaEditParamValues, ai as MediaEdits, co as MediaFxOp, cp as formatMediaNumber, cq as hasRenderableFx, cr as mediaEditHtmlAttribute, cs as mediaEditValuesFromAttributes, ct as mediaEditValuesFromParams, cu as mediaRenderKey, cv as normalizeMediaCrop, cw as normalizeMediaCuts, cx as parseMediaCrop, cy as parseMediaCuts, cz as parseMediaEdits, cA as parseMediaFx, cB as serializeMediaCrop, cC as serializeMediaCuts, cD as serializeMediaEdits, cE as serializeMediaFx } from '../Doc-DmElSKmg.js';
3
3
  import '../types-Be6sBUBx.js';
4
4
 
5
5
  /**
@@ -1,4 +1,4 @@
1
- import { O as Doc, f as AudioBookmark } from '../Doc-CynsGqL4.js';
1
+ import { O as Doc, f as AudioBookmark } from '../Doc-DmElSKmg.js';
2
2
  import '../types-Be6sBUBx.js';
3
3
 
4
4
  /**
@@ -27,7 +27,7 @@ import {
27
27
  recordSlideShown,
28
28
  traceWordPosAt,
29
29
  vadStep
30
- } from "../chunk-5FBI3ZW4.js";
30
+ } from "../chunk-QDA7NXDO.js";
31
31
  import "../chunk-NEWNNLWN.js";
32
32
  import {
33
33
  buildNarrationScript,
@@ -38,11 +38,11 @@ import {
38
38
  wordIndexAtChar,
39
39
  wordIndexAtTime,
40
40
  wordPosAtExpectedSyllables
41
- } from "../chunk-ZEONJCP3.js";
42
- import "../chunk-RMCUZDW5.js";
41
+ } from "../chunk-2PGC4JDT.js";
42
+ import "../chunk-QOVINAB2.js";
43
43
  import "../chunk-C3NAY5YP.js";
44
44
  import "../chunk-PUS54YU6.js";
45
- import "../chunk-Y4D6TDZT.js";
45
+ import "../chunk-PCCQLD3G.js";
46
46
  import "../chunk-L7QZORLB.js";
47
47
  import "../chunk-TMOHAFYE.js";
48
48
  import "../chunk-X7BNDUNI.js";
@@ -1,10 +1,10 @@
1
1
  export { B as BoundingBox, C as Coordinates } from '../Types-sh2VRxfo.js';
2
- import { O as Doc, bk as Theme, bn as ThemePageStyle, bm as ThemeColorScheme, I as DeepPartial, bq as ThemeSeedColors, bl as ThemeColorPalette, X as FontFamilyKind, W as FontFamily } from '../Doc-CynsGqL4.js';
3
- export { A as AccentImage, a as AccentPosition, b as AmbientGradientConfig, c as Animation, d as AnimationType, e as AreaChartInput, f as AudioBookmark, g as AudioSegment, h as AudioTimingData, i as AudioTrack, B as BarChartInput, j as BigTextInput, k as Block, l as BlockConnection, m as BorderStyle, C as CaptionPhrase, n as CaptionTrack, o as CaptionWord, p as ChartBaseFields, q as ChartTemplateInput, r as ColorScheme, s as ColumnChartInput, t as ComparisonBarInput, u as ContentBlockInput, v as CornerBrandingConfig, w as CustomTemplateDefinition, x as CustomTemplateLayer, y as CustomTemplateValidationError, z as CustomTemplateValidationResult, D as DARK_SURFACE, E as DEFAULT_DOC_FONT, F as DEFAULT_TITLE_FONT, G as DataTableInput, H as DateEventInput, J as DefinitionCardInput, K as DiagramBlockInput, L as DiagramEdgeAnchor, M as DiagramTemplateEdge, N as DiagramTemplateNode, P as DocBlock, Q as DocDiagnostic, R as DonutChartInput, S as DrawingBlockInput, T as FRONTMATTER_CUSTOM_TEMPLATES_KEY, U as FRONTMATTER_CUSTOM_THEMES_KEY, V as FactCardInput, Y as FullBleedQuoteInput, Z as GradientBackgroundConfig, _ as ImageBackgroundConfig, $ as ImageLayer, a0 as ImageTreatment, a1 as ImageWithCaptionInput, a2 as LIGHT_SURFACE, a3 as Layer, a4 as LayerRepeat, a5 as LayoutHints, a6 as LeftFeatureInput, a7 as LineChartInput, a8 as LinearGradient, a9 as ListBlockInput, aa as MapBlockInput, ab as MapLayer, ac as MapMarker, ad as MapTileStyle, ae as MarkerStyle, af as MediaClip, ag as MediaCrop, ah as MediaCut, ai as MediaEdits, aj as MediaScheduleOptions, ak as MermaidLayer, al as PAGE_ACCENT_STRATEGIES, am as PAGE_BACKGROUNDS, an as PAGE_BACKGROUND_RHYTHMS, ao as PAGE_DESIGN_FAMILIES, ap as PAGE_DIVIDERS, aq as PAGE_EMPHASES, ar as PAGE_EYEBROWS, as as PAGE_HEADING_CASES, at as PAGE_HEADING_SCALES, au as PAGE_HEADING_UNDERLINES, av as PAGE_HERO_STYLES, aw as PAGE_IMAGE_FRAMINGS, ax as PAGE_NUMERAL_STYLES, ay as PAGE_PATTERNS, az as PAGE_QUOTE_MARKS, aA as PAGE_SECTION_KINDS, aB as PAGE_SECTION_SPACINGS, aC as PAGE_SHADOWS, aD as PageAccentRotation, aE as PageBackground, aF as PageDesignFamily, aG as PageEmphasis, aH as PageHeadingTreatment, aI as PageSectionKind, aJ as PageSectionOverride, aK as PageTokens, aL as PathLayer, aM as PatternBackgroundConfig, aN as PersistentLayer, aO as PersistentLayerConfig, aP as PersistentLayerTemplate, aQ as PersistentLayerTemplateConfig, aR as PersistentLayerTemplateType, aS as PhotoGridInput, aT as PieChartInput, aU as PipStyle, aV as Position, aW as ProgressIndicatorConfig, aX as PromotedBodyAnnotation, aY as PullQuoteInput, aZ as QuoteBlockInput, a_ as RawLayersInput, a$ as RenderStyle, b0 as RightFeatureInput, b1 as ScatterChartInput, b2 as ScheduledClip, b3 as SectionHeaderInput, b4 as ShapeFilter, b5 as ShapeLayer, b6 as ShapePattern, b7 as SolidBackgroundConfig, b8 as StartBlockConfig, b9 as StatHighlightInput, ba as SurfaceScheme, bb as THEME_SCHEMA_VERSION, bc as TableLayer, bd as TableLayerStyle, be as TemplateBlock, bf as TemplateContext, bg as TemplateFunction, bh as TemplateRegistry, bi as TextLayer, bj as TextStyle, bo as ThemeRegistry, bp as ThemeSchemaVersion, br as ThemeStyle, bs as ThemeTypography, bt as TimelineBlockInput, bu as TimelineTemplateEvent, bv as TimelineTemplateLink, bw as TimelineTemplateTrack, bx as TitleBlockInput, by as TitleCaptionConfig, bz as TranscriptBlockInput, bA as TreeBlockInput, bB as TreeLayer, bC as TreeLayerItem, bD as TreeLayerStyle, bE as TreeTemplateItem, bF as TwoColumnInput, bG as VIEWPORT_PRESETS, bH as VideoLayer, bI as VideoPipPosition, bJ as VideoPipShape, bK as VideoPipSize, bL as VideoPlacement, bM as VideoPresentation, bN as VideoPullQuoteInput, bO as VideoWithCaptionInput, bP as ViewportConfig, bQ as ViewportOrientation, bR as ViewportPreset, bS as VignetteConfig, bT as applySurface, bU as calculateDuration, bV as calculateFontScale, bW as createTemplateContext, bX as createTheme, bY as createThemeRegistry, bZ as getAspectRatioString, b_ as getBlockAtTime, b$ as getCaptionAtTime, c0 as getDocPlaybackDuration, c1 as getLayoutHints, c2 as getSafeTextBounds, c3 as getSegmentAtTime, c4 as getTwoColumnPositions, c5 as getViewport, c6 as getViewportOrientation, c7 as isCustomTemplateDefinition, c8 as isPersistentLayerTemplate, c9 as isTemplateBlock, ca as layoutScaledFontSize, cb as resolveMediaSchedule, cc as scaledFontSize, cd as scheduleMediaClip, ce as validateCustomTemplateDefinition } from '../Doc-CynsGqL4.js';
2
+ import { O as Doc, bm as Theme, bp as ThemePageStyle, bo as ThemeColorScheme, I as DeepPartial, bs as ThemeSeedColors, bn as ThemeColorPalette, X as FontFamilyKind, W as FontFamily } from '../Doc-DmElSKmg.js';
3
+ export { A as AccentImage, a as AccentPosition, b as AmbientGradientConfig, c as Animation, d as AnimationType, e as AreaChartInput, f as AudioBookmark, g as AudioSegment, h as AudioTimingData, i as AudioTrack, B as BarChartInput, j as BigTextInput, k as Block, l as BlockConnection, m as BorderStyle, C as CaptionPhrase, n as CaptionTrack, o as CaptionWord, p as ChartBaseFields, q as ChartTemplateInput, r as ColorScheme, s as ColumnChartInput, t as ComparisonBarInput, u as ContentBlockInput, v as CornerBrandingConfig, w as CustomTemplateDefinition, x as CustomTemplateLayer, y as CustomTemplateValidationError, z as CustomTemplateValidationResult, D as DARK_SURFACE, E as DEFAULT_DOC_FONT, F as DEFAULT_TITLE_FONT, G as DataTableInput, H as DateEventInput, J as DefinitionCardInput, K as DiagramBlockInput, L as DiagramEdgeAnchor, M as DiagramTemplateEdge, N as DiagramTemplateNode, P as DocBlock, Q as DocDiagnostic, R as DonutChartInput, S as DrawingBlockInput, T as FRONTMATTER_CUSTOM_TEMPLATES_KEY, U as FRONTMATTER_CUSTOM_THEMES_KEY, V as FactCardInput, Y as FullBleedQuoteInput, Z as GradientBackgroundConfig, _ as ImageBackgroundConfig, $ as ImageLayer, a0 as ImageTreatment, a1 as ImageWithCaptionInput, a2 as LIGHT_SURFACE, a3 as Layer, a4 as LayerRepeat, a5 as LayoutHints, a6 as LeftFeatureInput, a7 as LineChartInput, a8 as LinearGradient, a9 as ListBlockInput, aa as MapBlockInput, ab as MapLayer, ac as MapMarker, ad as MapTileStyle, ae as MarkerStyle, af as MediaClip, ag as MediaCrop, ah as MediaCut, ai as MediaEdits, aj as MediaScheduleOptions, ak as MermaidLayer, al as PAGE_ACCENT_STRATEGIES, am as PAGE_BACKGROUNDS, an as PAGE_BACKGROUND_RHYTHMS, ao as PAGE_DESIGN_FAMILIES, ap as PAGE_DIVIDERS, aq as PAGE_EMPHASES, ar as PAGE_EYEBROWS, as as PAGE_HEADING_CASES, at as PAGE_HEADING_SCALES, au as PAGE_HEADING_UNDERLINES, av as PAGE_HERO_STYLES, aw as PAGE_IMAGE_FRAMINGS, ax as PAGE_NUMERAL_STYLES, ay as PAGE_PATTERNS, az as PAGE_QUOTE_MARKS, aA as PAGE_SECTION_KINDS, aB as PAGE_SECTION_SPACINGS, aC as PAGE_SHADOWS, aD as PAGE_VARIANTS, aE as PageAccentRotation, aF as PageBackground, aG as PageDesignFamily, aH as PageEmphasis, aI as PageHeadingTreatment, aJ as PageSectionKind, aK as PageSectionOverride, aL as PageTokens, aM as PageVariant, aN as PathLayer, aO as PatternBackgroundConfig, aP as PersistentLayer, aQ as PersistentLayerConfig, aR as PersistentLayerTemplate, aS as PersistentLayerTemplateConfig, aT as PersistentLayerTemplateType, aU as PhotoGridInput, aV as PieChartInput, aW as PipStyle, aX as Position, aY as ProgressIndicatorConfig, aZ as PromotedBodyAnnotation, a_ as PullQuoteInput, a$ as QuoteBlockInput, b0 as RawLayersInput, b1 as RenderStyle, b2 as RightFeatureInput, b3 as ScatterChartInput, b4 as ScheduledClip, b5 as SectionHeaderInput, b6 as ShapeFilter, b7 as ShapeLayer, b8 as ShapePattern, b9 as SolidBackgroundConfig, ba as StartBlockConfig, bb as StatHighlightInput, bc as SurfaceScheme, bd as THEME_SCHEMA_VERSION, be as TableLayer, bf as TableLayerStyle, bg as TemplateBlock, bh as TemplateContext, bi as TemplateFunction, bj as TemplateRegistry, bk as TextLayer, bl as TextStyle, bq as ThemeRegistry, br as ThemeSchemaVersion, bt as ThemeStyle, bu as ThemeTypography, bv as TimelineBlockInput, bw as TimelineTemplateEvent, bx as TimelineTemplateLink, by as TimelineTemplateTrack, bz as TitleBlockInput, bA as TitleCaptionConfig, bB as TranscriptBlockInput, bC as TreeBlockInput, bD as TreeLayer, bE as TreeLayerItem, bF as TreeLayerStyle, bG as TreeTemplateItem, bH as TwoColumnInput, bI as VIEWPORT_PRESETS, bJ as VideoLayer, bK as VideoPipPosition, bL as VideoPipShape, bM as VideoPipSize, bN as VideoPlacement, bO as VideoPresentation, bP as VideoPullQuoteInput, bQ as VideoWithCaptionInput, bR as ViewportConfig, bS as ViewportOrientation, bT as ViewportPreset, bU as VignetteConfig, bV as applySurface, bW as calculateDuration, bX as calculateFontScale, bY as createTemplateContext, bZ as createTheme, b_ as createThemeRegistry, b$ as getAspectRatioString, c0 as getBlockAtTime, c1 as getCaptionAtTime, c2 as getDocPlaybackDuration, c3 as getLayoutHints, c4 as getSafeTextBounds, c5 as getSegmentAtTime, c6 as getTwoColumnPositions, c7 as getViewport, c8 as getViewportOrientation, c9 as isCustomTemplateDefinition, ca as isPersistentLayerTemplate, cb as isTemplateBlock, cc as layoutScaledFontSize, cd as resolveMediaSchedule, ce as scaledFontSize, cf as scheduleMediaClip, cg as validateCustomTemplateDefinition } from '../Doc-DmElSKmg.js';
4
4
  export { a as DEFAULT_TRANSITION_DURATION_SECONDS, a1 as TRANSITION_DIRECTIONS, a2 as TRANSITION_TYPES, a3 as Transition, a4 as TransitionDirection, a5 as TransitionType, a8 as isTransitionType, a9 as normalizeTransitionDirection, aa as normalizeTransitionType, ab as resolveBlockTransition, ad as resolveTransitionDuration } from '../types-Be6sBUBx.js';
5
- export { D as DEFAULT_THEME, a as DEFAULT_THEME_ID, T as THEMES, g as getAvailableThemes, b as getThemeSummaries, r as resolveTheme } from '../themeLibrary-z7t3x5CU.js';
5
+ export { D as DEFAULT_THEME, a as DEFAULT_THEME_ID, T as THEMES, g as getAvailableThemes, b as getThemeSummaries, r as resolveTheme } from '../themeLibrary-ChnTImby.js';
6
6
  export { M as MediaEntry, a as MediaProvider } from '../MediaProvider-wpSe21B3.js';
7
- export { E as EditorLayerMeta, I as ImageEditCanvas, a as ImageEditDoc, b as ImageEditLayer, c as ImageEditLayerKind, d as ImageEditMeta } from '../ImageEditDoc-BVZe_5y4.js';
7
+ export { E as EditorLayerMeta, I as ImageEditCanvas, a as ImageEditDoc, b as ImageEditLayer, c as ImageEditLayerKind, d as ImageEditMeta } from '../ImageEditDoc-Dm_BETxC.js';
8
8
 
9
9
  /**
10
10
  * Runtime validation for the canonical {@link Doc} JSON shape.
@@ -13,7 +13,7 @@ import {
13
13
  pipStyleVars,
14
14
  serializeTheme,
15
15
  validateDocSchema
16
- } from "../chunk-JJO6JFNZ.js";
16
+ } from "../chunk-B5STNW6C.js";
17
17
  import {
18
18
  defaultPageStyle,
19
19
  getDocPlaybackDuration,
@@ -49,6 +49,7 @@ import {
49
49
  PAGE_SECTION_KINDS,
50
50
  PAGE_SECTION_SPACINGS,
51
51
  PAGE_SHADOWS,
52
+ PAGE_VARIANTS,
52
53
  THEMES,
53
54
  THEME_SCHEMA_VERSION,
54
55
  VIEWPORT_PRESETS,
@@ -90,7 +91,7 @@ import {
90
91
  validateCustomTemplateDefinition,
91
92
  validateTheme,
92
93
  withAlpha
93
- } from "../chunk-Y4D6TDZT.js";
94
+ } from "../chunk-PCCQLD3G.js";
94
95
  import "../chunk-JSGIWW35.js";
95
96
  import "../chunk-L7QZORLB.js";
96
97
  import {
@@ -133,6 +134,7 @@ export {
133
134
  PAGE_SECTION_KINDS,
134
135
  PAGE_SECTION_SPACINGS,
135
136
  PAGE_SHADOWS,
137
+ PAGE_VARIANTS,
136
138
  STARTER_THEME,
137
139
  THEMES,
138
140
  THEME_SCHEMA_VERSION,
@@ -1,4 +1,4 @@
1
- import { bk as Theme, bo as ThemeRegistry } from './Doc-CynsGqL4.js';
1
+ import { bm as Theme, bq as ThemeRegistry } from './Doc-DmElSKmg.js';
2
2
 
3
3
  /**
4
4
  * Built-in Theme Library
@@ -1,4 +1,4 @@
1
- import { g as AudioSegment, h as AudioTimingData, n as CaptionTrack } from '../Doc-CynsGqL4.js';
1
+ import { g as AudioSegment, h as AudioTimingData, n as CaptionTrack } from '../Doc-DmElSKmg.js';
2
2
  import '../types-Be6sBUBx.js';
3
3
 
4
4
  /**
@@ -1,5 +1,5 @@
1
- import { O as Doc, r as ColorScheme, k as Block, be as TemplateBlock } from '../Doc-CynsGqL4.js';
2
- import { i as PageTransformHints } from '../materializePageSection-CAJoa8fh.js';
1
+ import { O as Doc, r as ColorScheme, k as Block, bg as TemplateBlock } from '../Doc-DmElSKmg.js';
2
+ import { i as PageTransformHints } from '../materializePageSection-BfttC9Zj.js';
3
3
  import { d as ExtractionType, E as ExtractedElement, b as ExtractionOptions } from '../contentExtractor-BNfVJV2U.js';
4
4
  import '../types-Be6sBUBx.js';
5
5
 
@@ -9,12 +9,12 @@ import {
9
9
  getTransformStyleSummaries,
10
10
  resolveTransformStyle,
11
11
  transformNarratedSegment
12
- } from "../chunk-KFZOCWPK.js";
12
+ } from "../chunk-CCRBHFNO.js";
13
13
  import "../chunk-SVN7T6BK.js";
14
- import "../chunk-RMCUZDW5.js";
14
+ import "../chunk-QOVINAB2.js";
15
15
  import "../chunk-C3NAY5YP.js";
16
16
  import "../chunk-PUS54YU6.js";
17
- import "../chunk-Y4D6TDZT.js";
17
+ import "../chunk-PCCQLD3G.js";
18
18
  import "../chunk-L7QZORLB.js";
19
19
  import "../chunk-HUXK7EOT.js";
20
20
  import "../chunk-TMOHAFYE.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bendyline/squisq",
3
- "version": "2.11.8",
3
+ "version": "2.11.9",
4
4
  "description": "Headless utilities for doc/block rendering, spatial math, Markdown, and storage",
5
5
  "license": "MIT",
6
6
  "author": "Bendyline",