@bendyline/squisq 2.11.7 → 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.
- package/dist/{Doc-BkxT7G80.d.ts → Doc-DmElSKmg.d.ts} +219 -1
- package/dist/{ImageEditDoc-C8ZB54Vv.d.ts → ImageEditDoc-Dm_BETxC.d.ts} +1 -1
- package/dist/{chunk-EF353KGH.js → chunk-2PGC4JDT.js} +1 -1
- package/dist/{chunk-YGGYYBJS.js → chunk-B5STNW6C.js} +2 -2
- package/dist/{chunk-IYZTF4VO.js → chunk-CCRBHFNO.js} +3 -3
- package/dist/{chunk-VU4T74LI.js → chunk-DTM4FG7S.js} +1 -1
- package/dist/chunk-JSGIWW35.js +70 -0
- package/dist/chunk-L7QZORLB.js +230 -0
- package/dist/chunk-NEWNNLWN.js +64 -0
- package/dist/{chunk-6ECMNUIP.js → chunk-OU5FYBOB.js} +170 -4
- package/dist/{chunk-Y4D6TDZT.js → chunk-PCCQLD3G.js} +2 -0
- package/dist/{chunk-SKKBRLLM.js → chunk-QDA7NXDO.js} +7 -42
- package/dist/{chunk-3YNFMFNK.js → chunk-QOVINAB2.js} +18 -9
- package/dist/{chunk-SOIV7KDO.js → chunk-VRTXPGP7.js} +256 -26
- package/dist/{chunk-XJXBI3N5.js → chunk-XZVBR5BP.js} +1 -1
- package/dist/{chunk-GAZKTT4R.js → chunk-YNO6JV36.js} +96 -33
- package/dist/doc/index.d.ts +10 -6
- package/dist/doc/index.js +23 -21
- package/dist/fence/index.d.ts +1 -1
- package/dist/generate/index.d.ts +1 -1
- package/dist/imageEdit/index.d.ts +47 -4
- package/dist/imageEdit/index.js +5 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.js +52 -41
- package/dist/jsonForm/index.d.ts +1 -1
- package/dist/jsonForm/index.js +6 -4
- package/dist/markdown/index.js +3 -3
- package/dist/{materializePageSection-Dp2aHFbc.d.ts → materializePageSection-BfttC9Zj.d.ts} +6 -3
- package/dist/mediaEdit/index.d.ts +467 -0
- package/dist/mediaEdit/index.js +990 -0
- package/dist/narration/index.d.ts +20 -12
- package/dist/narration/index.js +7 -5
- package/dist/schemas/index.d.ts +4 -4
- package/dist/schemas/index.js +10 -4
- package/dist/{themeLibrary-BbSjnGmd.d.ts → themeLibrary-ChnTImby.d.ts} +1 -1
- package/dist/timing/index.d.ts +1 -1
- package/dist/transform/index.d.ts +2 -2
- package/dist/transform/index.js +7 -6
- package/package.json +6 -1
- package/dist/{chunk-CW24CH7I.js → chunk-HUXK7EOT.js} +3 -3
package/dist/doc/index.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export { T as FRONTMATTER_CUSTOM_TEMPLATES_KEY, U as FRONTMATTER_CUSTOM_THEMES_KEY, a5 as LayoutHints,
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
74
|
-
import "../chunk-
|
|
73
|
+
} from "../chunk-VRTXPGP7.js";
|
|
74
|
+
import "../chunk-2PGC4JDT.js";
|
|
75
75
|
import {
|
|
76
76
|
ASCII_CHAR_H,
|
|
77
77
|
ASCII_CHAR_W,
|
|
@@ -193,21 +193,7 @@ import {
|
|
|
193
193
|
wrapWithPersistentLayers,
|
|
194
194
|
writeCustomTemplatesToFrontmatter,
|
|
195
195
|
writeCustomThemesToFrontmatter
|
|
196
|
-
} from "../chunk-
|
|
197
|
-
import {
|
|
198
|
-
PATH_SHAPE_KINDS,
|
|
199
|
-
anchorPoint,
|
|
200
|
-
clipEndpoints,
|
|
201
|
-
clipPoint,
|
|
202
|
-
connectorPath,
|
|
203
|
-
lineStyleDasharray,
|
|
204
|
-
markerPath,
|
|
205
|
-
nearestSnapPoint,
|
|
206
|
-
shapePath,
|
|
207
|
-
snapEndpoints,
|
|
208
|
-
snapPoints
|
|
209
|
-
} from "../chunk-PUS54YU6.js";
|
|
210
|
-
import "../chunk-7ZAAICW4.js";
|
|
196
|
+
} from "../chunk-QOVINAB2.js";
|
|
211
197
|
import {
|
|
212
198
|
ASCII_DIAGRAM_FENCE_LANGS,
|
|
213
199
|
ASCII_TIMELINE_FENCE_LANGS,
|
|
@@ -231,7 +217,21 @@ import {
|
|
|
231
217
|
parseTree,
|
|
232
218
|
parseWrappedFlowTimeline
|
|
233
219
|
} from "../chunk-C3NAY5YP.js";
|
|
234
|
-
import
|
|
220
|
+
import {
|
|
221
|
+
PATH_SHAPE_KINDS,
|
|
222
|
+
anchorPoint,
|
|
223
|
+
clipEndpoints,
|
|
224
|
+
clipPoint,
|
|
225
|
+
connectorPath,
|
|
226
|
+
lineStyleDasharray,
|
|
227
|
+
markerPath,
|
|
228
|
+
nearestSnapPoint,
|
|
229
|
+
shapePath,
|
|
230
|
+
snapEndpoints,
|
|
231
|
+
snapPoints
|
|
232
|
+
} from "../chunk-PUS54YU6.js";
|
|
233
|
+
import "../chunk-7ZAAICW4.js";
|
|
234
|
+
import "../chunk-YNO6JV36.js";
|
|
235
235
|
import {
|
|
236
236
|
DEFAULT_THEME,
|
|
237
237
|
FRONTMATTER_CUSTOM_TEMPLATES_KEY,
|
|
@@ -247,16 +247,18 @@ import {
|
|
|
247
247
|
isTemplateBlock,
|
|
248
248
|
resolveTheme,
|
|
249
249
|
scaledFontSize2 as scaledFontSize
|
|
250
|
-
} from "../chunk-
|
|
251
|
-
import "../chunk-
|
|
250
|
+
} from "../chunk-PCCQLD3G.js";
|
|
251
|
+
import "../chunk-JSGIWW35.js";
|
|
252
|
+
import "../chunk-L7QZORLB.js";
|
|
253
|
+
import "../chunk-HUXK7EOT.js";
|
|
252
254
|
import {
|
|
253
255
|
CONTAINER_TEMPLATES,
|
|
254
256
|
TABLE_FED_TEMPLATES,
|
|
255
257
|
isContainerTemplate,
|
|
256
258
|
resolveTemplateName
|
|
257
259
|
} from "../chunk-TMOHAFYE.js";
|
|
258
|
-
import "../chunk-7N4G32LG.js";
|
|
259
260
|
import "../chunk-X7BNDUNI.js";
|
|
261
|
+
import "../chunk-7N4G32LG.js";
|
|
260
262
|
import "../chunk-4VOD55SX.js";
|
|
261
263
|
import "../chunk-GHOPHGOK.js";
|
|
262
264
|
import "../chunk-XRW6P7IF.js";
|
package/dist/fence/index.d.ts
CHANGED
package/dist/generate/index.d.ts
CHANGED
|
@@ -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,
|
|
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-
|
|
2
|
-
export { E as EditorLayerMeta, I as ImageEditCanvas, c as ImageEditLayerKind, d as ImageEditMeta } from '../ImageEditDoc-
|
|
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-
|
|
5
|
+
import '../Doc-DmElSKmg.js';
|
|
6
6
|
import '../types-Be6sBUBx.js';
|
|
7
7
|
|
|
8
8
|
/**
|
|
@@ -253,4 +253,47 @@ declare function exportImageEditDoc(doc: ImageEditDoc, container: ContentContain
|
|
|
253
253
|
*/
|
|
254
254
|
declare function buildSvgString(doc: ImageEditDoc, container: ContentContainer): Promise<string>;
|
|
255
255
|
|
|
256
|
-
|
|
256
|
+
/**
|
|
257
|
+
* Animated-image inspection.
|
|
258
|
+
*
|
|
259
|
+
* Reads the container structure of a GIF, PNG (APNG) or WebP byte stream and
|
|
260
|
+
* reports whether it animates, how many frames it has, how long one pass
|
|
261
|
+
* takes, and how many passes the file asks for. It lets a renderer decide
|
|
262
|
+
* whether an image deserves playback controls, and lets the image editor
|
|
263
|
+
* refuse to flatten an animation into a still.
|
|
264
|
+
*
|
|
265
|
+
* Structure only: no pixel data is decoded. GIF image data is skipped by
|
|
266
|
+
* sub-block length and PNG/WebP chunks by their size fields, so a scan is
|
|
267
|
+
* linear in the number of blocks. Truncated or malformed input never throws;
|
|
268
|
+
* the scan stops and reports what it read.
|
|
269
|
+
*/
|
|
270
|
+
type AnimatedImageFormat = 'gif' | 'png' | 'webp';
|
|
271
|
+
interface AnimatedImageInfo {
|
|
272
|
+
format: AnimatedImageFormat;
|
|
273
|
+
/** True when the image has more than one frame to play. */
|
|
274
|
+
animated: boolean;
|
|
275
|
+
/** Frames in one pass. 1 for a still image. */
|
|
276
|
+
frameCount: number;
|
|
277
|
+
/**
|
|
278
|
+
* Length of one pass in milliseconds, timed the way browsers play it: a
|
|
279
|
+
* frame delay of 10 ms or less plays at 100 ms. 0 for a still image.
|
|
280
|
+
*/
|
|
281
|
+
durationMs: number;
|
|
282
|
+
/** Passes the file asks for; 0 means it loops forever. 1 for a still image. */
|
|
283
|
+
playCount: number;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Inspect an image's bytes. Returns `null` when the bytes are not a GIF, PNG
|
|
287
|
+
* or WebP (a JPEG, for instance, can never animate).
|
|
288
|
+
*/
|
|
289
|
+
declare function inspectAnimatedImage(input: Uint8Array | ArrayBuffer): AnimatedImageInfo | null;
|
|
290
|
+
/**
|
|
291
|
+
* Whether a path, URL or MIME type names a format that can animate, i.e.
|
|
292
|
+
* whether reading its bytes is worthwhile. PNG is deliberately excluded: APNG
|
|
293
|
+
* is rare and nearly every screenshot is a PNG, so sniffing them all would
|
|
294
|
+
* cost far more than it finds. A caller already holding a PNG's bytes can
|
|
295
|
+
* still pass them to {@link inspectAnimatedImage}.
|
|
296
|
+
*/
|
|
297
|
+
declare function mayBeAnimatedImage(srcOrMime: string): boolean;
|
|
298
|
+
|
|
299
|
+
export { type AnimatedImageFormat, type AnimatedImageInfo, IMAGE_EDIT_ASSETS_PREFIX, IMAGE_EDIT_DEFAULT_BASENAME, IMAGE_EDIT_STATE_FILENAME, IMAGE_EDIT_VERSIONS_PREFIX, ImageEditDoc, type ImageEditExportFormat, type ImageEditExportOptions, ImageEditLayer, ImageEditVersionManager, type ImageEditVersionManagerOptions, type RevertImageEditFailureReason, type RevertImageEditOptions, type RevertImageEditResult, type SaveImageEditVersionOptions, type SaveImageEditVersionResult, addLayer, buildImageEditVersionPath, buildSvgString, coalesceImageEditVersions, createEmptyImageEditDoc, exportImageEditDoc, inspectAnimatedImage, listImageEditVersions, mayBeAnimatedImage, parseImageEditVersionPath, pruneImageEditVersions, readImageEditDoc, readImageEditVersion, readImageEditVersionText, removeLayer, reorderLayer, revertToImageEditVersion, saveImageEditVersion, setCanvas, touch, updateLayer, writeImageEditDoc };
|
package/dist/imageEdit/index.js
CHANGED
|
@@ -10,7 +10,9 @@ import {
|
|
|
10
10
|
coalesceImageEditVersions,
|
|
11
11
|
createEmptyImageEditDoc,
|
|
12
12
|
exportImageEditDoc,
|
|
13
|
+
inspectAnimatedImage,
|
|
13
14
|
listImageEditVersions,
|
|
15
|
+
mayBeAnimatedImage,
|
|
14
16
|
parseImageEditVersionPath,
|
|
15
17
|
pruneImageEditVersions,
|
|
16
18
|
readImageEditDoc,
|
|
@@ -24,7 +26,7 @@ import {
|
|
|
24
26
|
touch,
|
|
25
27
|
updateLayer,
|
|
26
28
|
writeImageEditDoc
|
|
27
|
-
} from "../chunk-
|
|
29
|
+
} from "../chunk-OU5FYBOB.js";
|
|
28
30
|
import "../chunk-OPO5K4DZ.js";
|
|
29
31
|
import "../chunk-PUS54YU6.js";
|
|
30
32
|
export {
|
|
@@ -39,7 +41,9 @@ export {
|
|
|
39
41
|
coalesceImageEditVersions,
|
|
40
42
|
createEmptyImageEditDoc,
|
|
41
43
|
exportImageEditDoc,
|
|
44
|
+
inspectAnimatedImage,
|
|
42
45
|
listImageEditVersions,
|
|
46
|
+
mayBeAnimatedImage,
|
|
43
47
|
parseImageEditVersionPath,
|
|
44
48
|
pruneImageEditVersions,
|
|
45
49
|
readImageEditDoc,
|
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
|
|
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-
|
|
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-
|
|
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-
|
|
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';
|
|
@@ -20,7 +20,7 @@ export { AnalyzedBlock, BlockImage, DEFAULT_TRANSFORM_STYLE_ID, NarratedSegmentI
|
|
|
20
20
|
export { C as CoalesceOptions, P as PrunePolicy, R as RevertFailureReason, a as RevertOptions, b as RevertResult, S as SaveVersionOptions, c as SaveVersionResult, V as Version } from './types-8QjefM9J.js';
|
|
21
21
|
export { DATA_BACKUP_PREFIX, DocumentVersionManager, DocumentVersionManagerOptions, VERSIONS_PREFIX, VERSION_TIMESTAMP_PATTERN, buildDataBackupPath, buildVersionPath, coalesceVersions, formatVersionTimestamp, getDocBasename, listVersions, parseVersionPath, parseVersionTimestamp, pruneVersions, readVersion, revertToVersion, saveVersion } from './versions/index.js';
|
|
22
22
|
export { BuildJsonFormTokensOptions, ControlKind, InferSchemaOptions, JsonFormValidationError, JsonFormValidator, SquisqAnnotatedSchema, SquisqHints, SquisqWhen, appendPointer, arrayItemKind, buildJsonFormTokens, chooseControl, escapePointerSegment, evaluateWhen, getByPointer, inferSchema, isSafeConditionRegex, pointerSegments, primaryType, resolveFlag, resolveJsonFormTheme, resolveRef, setByPointer, toPointer } from './jsonForm/index.js';
|
|
23
|
-
export { IMAGE_EDIT_ASSETS_PREFIX, IMAGE_EDIT_DEFAULT_BASENAME, IMAGE_EDIT_STATE_FILENAME, IMAGE_EDIT_VERSIONS_PREFIX, ImageEditExportFormat, ImageEditExportOptions, ImageEditVersionManager, ImageEditVersionManagerOptions, RevertImageEditFailureReason, RevertImageEditOptions, RevertImageEditResult, SaveImageEditVersionOptions, SaveImageEditVersionResult, addLayer, buildImageEditVersionPath, buildSvgString, coalesceImageEditVersions, createEmptyImageEditDoc, exportImageEditDoc, listImageEditVersions, parseImageEditVersionPath, pruneImageEditVersions, readImageEditDoc, readImageEditVersion, readImageEditVersionText, removeLayer, reorderLayer, revertToImageEditVersion, saveImageEditVersion, setCanvas, touch, updateLayer, writeImageEditDoc } from './imageEdit/index.js';
|
|
23
|
+
export { AnimatedImageFormat, AnimatedImageInfo, IMAGE_EDIT_ASSETS_PREFIX, IMAGE_EDIT_DEFAULT_BASENAME, IMAGE_EDIT_STATE_FILENAME, IMAGE_EDIT_VERSIONS_PREFIX, ImageEditExportFormat, ImageEditExportOptions, ImageEditVersionManager, ImageEditVersionManagerOptions, RevertImageEditFailureReason, RevertImageEditOptions, RevertImageEditResult, SaveImageEditVersionOptions, SaveImageEditVersionResult, addLayer, buildImageEditVersionPath, buildSvgString, coalesceImageEditVersions, createEmptyImageEditDoc, exportImageEditDoc, inspectAnimatedImage, listImageEditVersions, mayBeAnimatedImage, parseImageEditVersionPath, pruneImageEditVersions, readImageEditDoc, readImageEditVersion, readImageEditVersionText, removeLayer, reorderLayer, revertToImageEditVersion, saveImageEditVersion, setCanvas, touch, updateLayer, writeImageEditDoc } from './imageEdit/index.js';
|
|
24
24
|
export { I as ICONS, a as IconEntry, b as IconFamily, c as IconTextRun, h as hasIconMarker, i as iconClass, d as iconMarker, s as splitIconMarkers, e as stripIconMarkers } from './inlineIconMarker-CiE8Hlvz.js';
|
|
25
25
|
export { IconSuggestion, canonicalIconToken, iconGlyph, looksLikeIconToken, resolveIcon, suggestIcons } from './icons/index.js';
|
|
26
26
|
export { BlockContentProfile, RecommendationResult, profileBlockContents, recommendTemplatesForBlock } from './recommend/index.js';
|