@palmyit/elements 0.1.7 → 0.1.19

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.
Files changed (98) hide show
  1. package/README.md +2 -0
  2. package/dist/definitions.d.ts +34 -25
  3. package/dist/definitions.js +1681 -868
  4. package/dist/elements/article/definition.d.ts +43 -0
  5. package/dist/elements/article/template.d.ts +12 -0
  6. package/dist/elements/button/definition.d.ts +39 -0
  7. package/dist/elements/button/template.d.ts +2 -0
  8. package/dist/elements/checkbox/definition.d.ts +10 -0
  9. package/dist/elements/checkbox/template.d.ts +2 -0
  10. package/dist/elements/container/definition.d.ts +39 -0
  11. package/dist/elements/container/template.d.ts +2 -0
  12. package/dist/elements/divider/definition.d.ts +10 -0
  13. package/dist/elements/divider/template.d.ts +2 -0
  14. package/dist/elements/footer/definition.d.ts +35 -0
  15. package/dist/elements/footer/template.d.ts +2 -0
  16. package/dist/elements/heading/definition.d.ts +29 -0
  17. package/dist/elements/heading/template.d.ts +2 -0
  18. package/dist/elements/icon/definition.d.ts +29 -0
  19. package/dist/elements/icon/template.d.ts +2 -0
  20. package/dist/elements/image/definition.d.ts +80 -0
  21. package/dist/elements/image/template.d.ts +32 -0
  22. package/dist/elements/list/definition.d.ts +13 -0
  23. package/dist/elements/list/template.d.ts +2 -0
  24. package/dist/elements/nav/definition.d.ts +39 -0
  25. package/dist/elements/nav/template.d.ts +17 -0
  26. package/dist/elements/page/definition.d.ts +62 -0
  27. package/dist/elements/page/template.d.ts +2 -0
  28. package/dist/elements/radio/definition.d.ts +13 -0
  29. package/dist/elements/radio/template.d.ts +2 -0
  30. package/dist/elements/rich-text/definition.d.ts +8 -0
  31. package/dist/elements/rich-text/template.d.ts +2 -0
  32. package/dist/elements/section/definition.d.ts +39 -0
  33. package/dist/elements/section/template.d.ts +2 -0
  34. package/dist/elements/select/definition.d.ts +13 -0
  35. package/dist/elements/select/template.d.ts +2 -0
  36. package/dist/{schema/PTable/pTable.definition.d.ts → elements/table/definition.d.ts} +4 -2
  37. package/dist/elements/table/template.d.ts +2 -0
  38. package/dist/{schema/PText/pText.definition.d.ts → elements/text/definition.d.ts} +11 -10
  39. package/dist/elements/text/template.d.ts +2 -0
  40. package/dist/elements/text-area/definition.d.ts +10 -0
  41. package/dist/elements/text-area/template.d.ts +2 -0
  42. package/dist/elements/text-field/definition.d.ts +10 -0
  43. package/dist/elements/text-field/template.d.ts +2 -0
  44. package/dist/elements/video/definition.d.ts +49 -0
  45. package/dist/elements/video/template.d.ts +8 -0
  46. package/dist/elements/video/youtube.d.ts +4 -0
  47. package/dist/manifest.json +2 -2
  48. package/dist/plmt-elements.css +2 -1
  49. package/dist/render/renderHtml.d.ts +1 -1
  50. package/dist/render/styleToClasses.d.ts +34 -0
  51. package/dist/render/styleToVars.d.ts +2 -0
  52. package/dist/render/styleTokens.d.ts +67 -0
  53. package/dist/render/tags.d.ts +9 -1
  54. package/dist/render/types.d.ts +10 -0
  55. package/dist/schema/Fields/BackgroundField/backgroundValue.d.ts +4 -3
  56. package/dist/schema/Fields/ColorField/colorText.d.ts +3 -0
  57. package/dist/schema/Fields/IconPicker/iconCatalog.d.ts +5 -1
  58. package/dist/schema/addressSchema.d.ts +2 -0
  59. package/dist/schema/backgroundStyleDefinitions.d.ts +1 -6
  60. package/dist/schema/device/devices.d.ts +8 -0
  61. package/dist/schema/deviceSettings.d.ts +1 -1
  62. package/dist/schema/elementCategories.d.ts +29 -0
  63. package/dist/schema/elementConfiguration.d.ts +1 -1
  64. package/dist/schema/elementRegistry.d.ts +38 -14
  65. package/dist/schema/elementStyleDefinitions.d.ts +7 -15
  66. package/dist/schema/elementTemplates.d.ts +3 -2
  67. package/dist/schema/linkSettings.d.ts +19 -2
  68. package/dist/schema/style/elementStyle.d.ts +3 -3
  69. package/dist/schema/style/page-styles.d.ts +2 -2
  70. package/dist/schema/styleItems.d.ts +18 -0
  71. package/dist/schema/styleTokensSchema.d.ts +290 -0
  72. package/dist/tags.json +5 -1
  73. package/dist/templates/brands/brandSpec.d.ts +5 -0
  74. package/dist/templates/elementSpec.d.ts +3 -8
  75. package/dist/templates/head.d.ts +43 -0
  76. package/dist/templates/helpers.d.ts +9 -1
  77. package/dist/templates/heroicons/heroiconSpec.d.ts +6 -0
  78. package/dist/templates.d.ts +6 -1
  79. package/dist/templates.js +1428 -234
  80. package/dist/youtube-BDsE1Bz3.js +910 -0
  81. package/package.json +5 -3
  82. package/dist/schema/PButton/pButton.definition.d.ts +0 -38
  83. package/dist/schema/PCheckbox/pCheckbox.definition.d.ts +0 -10
  84. package/dist/schema/PContainer/pContainer.definition.d.ts +0 -39
  85. package/dist/schema/PDivider/pDivider.definition.d.ts +0 -10
  86. package/dist/schema/PIcon/pIcon.definition.d.ts +0 -18
  87. package/dist/schema/PImage/pImage.definition.d.ts +0 -33
  88. package/dist/schema/PList/pList.definition.d.ts +0 -11
  89. package/dist/schema/PPage/pPage.definition.d.ts +0 -22
  90. package/dist/schema/PRadio/pRadio.definition.d.ts +0 -13
  91. package/dist/schema/PRichText/pRichText.definition.d.ts +0 -8
  92. package/dist/schema/PSection/pSection.definition.d.ts +0 -39
  93. package/dist/schema/PSelect/pSelect.definition.d.ts +0 -13
  94. package/dist/schema/PTextArea/pTextArea.definition.d.ts +0 -10
  95. package/dist/schema/PTextField/pTextField.definition.d.ts +0 -10
  96. package/dist/schema/PVideo/pVideo.definition.d.ts +0 -10
  97. /package/dist/{schema/PRichText → elements/rich-text}/richTextMarks.d.ts +0 -0
  98. /package/dist/{schema/PRichText → elements/rich-text}/richTextOptions.d.ts +0 -0
@@ -1,4 +1,4 @@
1
- import { TextItem } from '../textItems';
1
+ import { TextItem } from '../../schema/textItems';
2
2
  export type TableRow = {
3
3
  cells: string[];
4
4
  };
@@ -6,6 +6,7 @@ export type PTableDocumentProps = {
6
6
  id: string;
7
7
  headers: TextItem[];
8
8
  rows: TableRow[];
9
+ caption: string;
9
10
  };
10
11
  export declare const defaultTableProps: {
11
12
  headers: {
@@ -14,7 +15,8 @@ export declare const defaultTableProps: {
14
15
  rows: {
15
16
  cells: string[];
16
17
  }[];
18
+ caption: string;
17
19
  };
18
20
  /** Pads or trims every row to one cell per column. */
19
21
  export declare function fitRowsToHeaders(columnCount: number, rows: readonly TableRow[]): TableRow[];
20
- export declare const pTableDefinition: import('../elementConfiguration').ElementConfiguration<PTableDocumentProps & Partial<import('../deviceVisibility').DeviceVisibility> & Partial<Record<"tabletStyle" | "mobileStyle" | "tabletLandscapeStyle" | "mobileLandscapeStyle", Partial<Record<string, unknown>>>>>;
22
+ export declare const pTableDefinition: import('../../definitions').ElementConfiguration<PTableDocumentProps & Partial<import('../../definitions').DeviceVisibility> & Partial<Record<"tabletStyle" | "mobileStyle" | "tabletLandscapeStyle" | "mobileLandscapeStyle", Partial<Record<string, unknown>>>>>;
@@ -0,0 +1,2 @@
1
+ import { ElementSpec, ElementSpecOptions, ShortcodeNode } from '../../render/types';
2
+ export declare function tableTemplate(node: ShortcodeNode, _options?: ElementSpecOptions): ElementSpec | null;
@@ -1,9 +1,9 @@
1
- import { LinkSettings } from '../linkSettings';
2
- import { StyleDefinition } from '../styleItems';
3
- import { ColorValue } from '../Fields/ColorField/color-value';
4
- import { FontStyle } from '../Fields/FontStyleField';
1
+ import { LinkSettings } from '../../schema/linkSettings';
2
+ import { StyleDefinition } from '../../schema/styleItems';
3
+ import { StyleColor } from '../../render/styleTokens';
4
+ import { FontStyle } from '../../schema/Fields/FontStyleField';
5
5
  export declare const TEXT_DECORATIONS: readonly ["none", "underline", "overline", "line-through"];
6
- export declare const TEXT_ALIGNS: readonly ["left", "center", "right", "justify"];
6
+ export declare const TEXT_ALIGNS: readonly ["start", "end", "left", "center", "right", "justify"];
7
7
  export declare const TEXT_TRANSFORMS: readonly ["none", "capitalize", "uppercase", "lowercase"];
8
8
  export declare const FONT_WEIGHTS: readonly ["100", "200", "300", "400", "500", "600", "700", "800", "900"];
9
9
  export type TextDecoration = (typeof TEXT_DECORATIONS)[number];
@@ -14,8 +14,8 @@ export type FontWeight = (typeof FONT_WEIGHTS)[number];
14
14
  export type TextStyle = Partial<{
15
15
  textFont: string;
16
16
  fontStyle: FontStyle;
17
- textSize: string;
18
- textColor: ColorValue;
17
+ textSize: string | number;
18
+ textColor: StyleColor;
19
19
  lineHeight: string;
20
20
  letterSpacing: string;
21
21
  wordSpacing: string;
@@ -32,15 +32,16 @@ export type PTextDocumentProps = LinkSettings & {
32
32
  export declare const defaultTextProps: {
33
33
  style: TextStyle;
34
34
  href: string;
35
- target: import('../linkSettings').LinkTarget;
35
+ target: import('../../schema/linkSettings').LinkTarget;
36
36
  description: string;
37
+ rel: import('../../definitions').LinkRel;
37
38
  text: string;
38
39
  };
39
40
  export declare const TEXT_PREFIX = "--palmyit-text";
40
41
  /** The Text style keys, written under `prefix` so each element keeps its own variables. */
41
42
  export declare function textStyleDefinitions(prefix: string): StyleDefinition[];
42
- export declare const pTextDefinition: import('../elementConfiguration').ElementConfiguration<LinkSettings & {
43
+ export declare const pTextDefinition: import('../../definitions').ElementConfiguration<LinkSettings & {
43
44
  id: string;
44
45
  text: string;
45
46
  style: TextStyle;
46
- } & Partial<import('../deviceVisibility').DeviceVisibility> & Partial<Record<"tabletStyle" | "mobileStyle" | "tabletLandscapeStyle" | "mobileLandscapeStyle", Partial<Record<string, unknown>>>>>;
47
+ } & Partial<import('../../definitions').DeviceVisibility> & Partial<Record<"tabletStyle" | "mobileStyle" | "tabletLandscapeStyle" | "mobileLandscapeStyle", Partial<Record<string, unknown>>>>>;
@@ -0,0 +1,2 @@
1
+ import { ElementSpec, ElementSpecOptions, ShortcodeNode } from '../../render/types';
2
+ export declare function textTemplate(node: ShortcodeNode, _options?: ElementSpecOptions): ElementSpec | null;
@@ -0,0 +1,10 @@
1
+ export type PTextAreaDocumentProps = {
2
+ id: string;
3
+ label: string;
4
+ placeholder: string;
5
+ };
6
+ export declare const defaultTextAreaProps: {
7
+ label: string;
8
+ placeholder: string;
9
+ };
10
+ export declare const pTextAreaDefinition: import('../../definitions').ElementConfiguration<PTextAreaDocumentProps & Partial<import('../../definitions').DeviceVisibility> & Partial<Record<"tabletStyle" | "mobileStyle" | "tabletLandscapeStyle" | "mobileLandscapeStyle", Partial<Record<string, unknown>>>>>;
@@ -0,0 +1,2 @@
1
+ import { ElementSpec, ElementSpecOptions, ShortcodeNode } from '../../render/types';
2
+ export declare function textAreaTemplate(node: ShortcodeNode, _options?: ElementSpecOptions): ElementSpec | null;
@@ -0,0 +1,10 @@
1
+ export type PTextFieldDocumentProps = {
2
+ id: string;
3
+ label: string;
4
+ placeholder: string;
5
+ };
6
+ export declare const defaultTextFieldProps: {
7
+ label: string;
8
+ placeholder: string;
9
+ };
10
+ export declare const pTextFieldDefinition: import('../../definitions').ElementConfiguration<PTextFieldDocumentProps & Partial<import('../../definitions').DeviceVisibility> & Partial<Record<"tabletStyle" | "mobileStyle" | "tabletLandscapeStyle" | "mobileLandscapeStyle", Partial<Record<string, unknown>>>>>;
@@ -0,0 +1,2 @@
1
+ import { ElementSpec, ElementSpecOptions, ShortcodeNode } from '../../render/types';
2
+ export declare function textFieldTemplate(node: ShortcodeNode, _options?: ElementSpecOptions): ElementSpec | null;
@@ -0,0 +1,49 @@
1
+ export declare const VIDEO_SOURCES: readonly ["file", "youtube"];
2
+ export type VideoSource = (typeof VIDEO_SOURCES)[number];
3
+ export declare const VIDEO_PRELOADS: readonly ["none", "metadata"];
4
+ export type VideoPreload = (typeof VIDEO_PRELOADS)[number];
5
+ export declare const VIDEO_ASPECT_RATIOS: readonly ["video", "9/16", "4/3", "square"];
6
+ export type VideoAspectRatio = (typeof VIDEO_ASPECT_RATIOS)[number];
7
+ export type VideoCaptionTrack = {
8
+ src: string;
9
+ srclang: string;
10
+ label: string;
11
+ };
12
+ export type PVideoDocumentProps = {
13
+ id: string;
14
+ source: VideoSource;
15
+ src: string;
16
+ youtubeUrl: string;
17
+ title: string;
18
+ description: string;
19
+ poster: string;
20
+ uploadDate: string;
21
+ captions: VideoCaptionTrack[];
22
+ autoplay: boolean;
23
+ loop: boolean;
24
+ muted: boolean;
25
+ controls: boolean;
26
+ preload: VideoPreload;
27
+ startAt: number;
28
+ aspectRatio: VideoAspectRatio;
29
+ caption: string;
30
+ };
31
+ export declare const defaultVideoProps: {
32
+ source: "file";
33
+ src: string;
34
+ youtubeUrl: string;
35
+ title: string;
36
+ description: string;
37
+ poster: string;
38
+ uploadDate: string;
39
+ captions: VideoCaptionTrack[];
40
+ autoplay: boolean;
41
+ loop: boolean;
42
+ muted: boolean;
43
+ controls: boolean;
44
+ preload: "metadata";
45
+ startAt: number;
46
+ aspectRatio: "video";
47
+ caption: string;
48
+ };
49
+ export declare const pVideoDefinition: import('../../definitions').ElementConfiguration<PVideoDocumentProps & Partial<import('../../definitions').DeviceVisibility> & Partial<Record<"tabletStyle" | "mobileStyle" | "tabletLandscapeStyle" | "mobileLandscapeStyle", Partial<Record<string, unknown>>>>>;
@@ -0,0 +1,8 @@
1
+ import { ElementSpec, ElementSpecOptions, ShortcodeNode } from '../../render/types';
2
+ export declare const VIDEO_ASPECT_CLASSES: {
3
+ readonly video: "aspect-video";
4
+ readonly '9/16': "aspect-9/16";
5
+ readonly '4/3': "aspect-4/3";
6
+ readonly square: "aspect-square";
7
+ };
8
+ export declare function videoTemplate(node: ShortcodeNode, _options?: ElementSpecOptions): ElementSpec | null;
@@ -0,0 +1,4 @@
1
+ /** Extract an 11-character YouTube video id from common URL shapes. */
2
+ export declare function parseYoutubeId(value: string): string | null;
3
+ export declare function youtubeEmbedUrl(id: string, startAt?: number): string;
4
+ export declare function youtubeThumbnailUrl(id: string): string;
@@ -1,7 +1,7 @@
1
1
  {
2
- "version": "0.1.7",
2
+ "version": "0.1.19",
3
3
  "files": {
4
- "plmt-elements.css": "sha384-eJlb3M+bTfPog3lcAyGeMHgK0eguPsEl8jq4rkLdqnd39Zfe/p6iJLHNqP4Y+J/w",
4
+ "plmt-elements.css": "sha384-aWYUiJ/OG2gpKI9s8H3w3lCHOtdqu1QsEjd08xja1ixWnTkeCiQQkenwY3cBL1HU",
5
5
  "plmt-elements.js": "sha384-OLBgp1GsljhM2TJ+sbHjaiH9txEUvgdDTAzHv2P24donTt6/529l+9Ua0vFImLlb"
6
6
  }
7
7
  }
@@ -1,2 +1,3 @@
1
- .plmt-page{--plmt-theme-font-family:system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--plmt-theme-font-size:16px;--plmt-theme-text-color:#334155;--plmt-theme-accent-color:#0f766e;--plmt-theme-accent-text:#0f766e;--plmt-theme-radius:.375rem;--plmt-theme-radius-full:9999px;--plmt-theme-space-2:.5rem;--plmt-theme-space-3:.75rem;--plmt-theme-button-height:2.5rem;--plmt-theme-button-bg:color-mix(in srgb, var(--plmt-theme-accent-color) 12%, transparent)}.plmt-page,.plmt-section,.plmt-container,.plmt-button,.plmt-text,.plmt-rich-text,.plmt-image,.plmt-video,.plmt-list,.plmt-icon,.plmt-divider,.plmt-table,.plmt-text-field,.plmt-text-area,.plmt-checkbox,.plmt-radio,.plmt-select{box-sizing:border-box}.plmt-page,.plmt-section,.plmt-container,.plmt-text,.plmt-rich-text,.plmt-table,.plmt-text-field,.plmt-text-area,.plmt-checkbox,.plmt-radio,.plmt-select,video.plmt-video,ul.plmt-list,hr.plmt-divider,img.plmt-image{display:block}a.plmt-image{display:inline-block}.plmt-button,.plmt-icon{display:inline-flex}.plmt-page{font-family:var(--palmyit-page-font-family,var(--plmt-theme-font-family));font-size:var(--palmyit-page-font-size,var(--plmt-theme-font-size));color:var(--palmyit-page-text-color,var(--plmt-theme-text-color));background-color:var(--palmyit-page-background-color,transparent);position:relative}.plmt-section{overflow-x:var(--palmyit-section-overflow-x,auto);overflow-y:var(--palmyit-section-overflow-y,auto);width:var(--palmyit-section-width,auto);height:var(--palmyit-section-height,auto);min-width:var(--palmyit-section-min-width,auto);min-height:var(--palmyit-section-min-height,auto);max-width:var(--palmyit-section-max-width,none);max-height:var(--palmyit-section-max-height,none);padding-top:var(--palmyit-section-padding-top,0);padding-bottom:var(--palmyit-section-padding-bottom,0);padding-left:var(--palmyit-section-padding-left,0);padding-right:var(--palmyit-section-padding-right,0);margin-top:var(--palmyit-section-margin-top,0);margin-bottom:var(--palmyit-section-margin-bottom,0);margin-left:var(--palmyit-section-margin-left,0);margin-right:var(--palmyit-section-margin-right,0);border-top-left-radius:var(--palmyit-section-border-top-left-radius,0);border-top-right-radius:var(--palmyit-section-border-top-right-radius,0);border-bottom-right-radius:var(--palmyit-section-border-bottom-right-radius,0);border-bottom-left-radius:var(--palmyit-section-border-bottom-left-radius,0);border-width:var(--palmyit-section-border-width,0);border-style:var(--palmyit-section-border-style,none);border-color:var(--palmyit-section-border-color,transparent);background-color:var(--palmyit-section-background-color,transparent);background-image:var(--palmyit-section-background-image,none);flex-direction:column;display:flex}.plmt-section[data-layout=flex]{flex-direction:var(--palmyit-section-flex-direction,row);flex-wrap:var(--palmyit-section-flex-wrap,nowrap);justify-content:var(--palmyit-section-justify-content,flex-start);align-items:var(--palmyit-section-align-items,stretch);align-content:var(--palmyit-section-align-content,stretch);row-gap:var(--palmyit-section-row-gap,0);column-gap:var(--palmyit-section-column-gap,0);display:flex}.plmt-section[data-layout=grid]{grid-template-columns:var(--palmyit-section-grid-template-columns,none);row-gap:var(--palmyit-section-row-gap,0);column-gap:var(--palmyit-section-column-gap,0);display:grid}.plmt-section[data-layout=flex]>*,.plmt-section[data-layout=grid]>*{min-width:0}.plmt-container{overflow-x:var(--palmyit-container-overflow-x,auto);overflow-y:var(--palmyit-container-overflow-y,auto);width:var(--palmyit-container-width,auto);height:var(--palmyit-container-height,auto);min-width:var(--palmyit-container-min-width,0);min-height:var(--palmyit-container-min-height,auto);max-width:var(--palmyit-container-max-width,none);max-height:var(--palmyit-container-max-height,none);padding-top:var(--palmyit-container-padding-top,0);padding-bottom:var(--palmyit-container-padding-bottom,0);padding-left:var(--palmyit-container-padding-left,0);padding-right:var(--palmyit-container-padding-right,0);margin-top:var(--palmyit-container-margin-top,0);margin-bottom:var(--palmyit-container-margin-bottom,0);margin-left:var(--palmyit-container-margin-left,0);margin-right:var(--palmyit-container-margin-right,0);border-top-left-radius:var(--palmyit-container-border-top-left-radius,0);border-top-right-radius:var(--palmyit-container-border-top-right-radius,0);border-bottom-right-radius:var(--palmyit-container-border-bottom-right-radius,0);border-bottom-left-radius:var(--palmyit-container-border-bottom-left-radius,0);border-width:var(--palmyit-container-border-width,0);border-style:var(--palmyit-container-border-style,none);border-color:var(--palmyit-container-border-color,transparent);background-color:var(--palmyit-container-background-color,transparent);background-image:var(--palmyit-container-background-image,none);box-sizing:border-box;flex-direction:column;display:flex}.plmt-container[data-layout=flex]{flex-direction:var(--palmyit-container-flex-direction,row);flex-wrap:var(--palmyit-container-flex-wrap,nowrap);justify-content:var(--palmyit-container-justify-content,flex-start);align-items:var(--palmyit-container-align-items,stretch);align-content:var(--palmyit-container-align-content,stretch);row-gap:var(--palmyit-container-row-gap,0);column-gap:var(--palmyit-container-column-gap,0);display:flex}.plmt-container[data-layout=grid]{grid-template-columns:var(--palmyit-container-grid-template-columns,none);row-gap:var(--palmyit-container-row-gap,0);column-gap:var(--palmyit-container-column-gap,0);display:grid}.plmt-container[data-layout=flex]>*,.plmt-container[data-layout=grid]>*{min-width:0}.plmt-button{color:var(--palmyit-button-text-color,var(--plmt-theme-accent-text));font-family:var(--palmyit-button-font-family,var(--plmt-theme-font-family));font-size:var(--palmyit-button-font-size,var(--plmt-theme-font-size));justify-content:center;align-items:center;gap:var(--palmyit-button-gap,var(--plmt-theme-space-2));border-width:var(--palmyit-button-border-width,0);border-style:var(--palmyit-button-border-style,solid);border-color:var(--palmyit-button-border-color,currentColor);border-top-left-radius:var(--palmyit-button-border-top-left-radius,max(var(--plmt-theme-radius), var(--plmt-theme-radius-full)));border-top-right-radius:var(--palmyit-button-border-top-right-radius,max(var(--plmt-theme-radius), var(--plmt-theme-radius-full)));border-bottom-right-radius:var(--palmyit-button-border-bottom-right-radius,max(var(--plmt-theme-radius), var(--plmt-theme-radius-full)));border-bottom-left-radius:var(--palmyit-button-border-bottom-left-radius,max(var(--plmt-theme-radius), var(--plmt-theme-radius-full)));padding-top:var(--palmyit-button-padding-top,0);padding-bottom:var(--palmyit-button-padding-bottom,0);padding-left:var(--palmyit-button-padding-left,var(--plmt-theme-space-3));padding-right:var(--palmyit-button-padding-right,var(--plmt-theme-space-3));margin-top:var(--palmyit-button-margin-top,0);margin-bottom:var(--palmyit-button-margin-bottom,0);margin-left:var(--palmyit-button-margin-left,0);margin-right:var(--palmyit-button-margin-right,0);width:var(--palmyit-button-width,auto);height:var(--palmyit-button-height,var(--plmt-theme-button-height));min-width:var(--palmyit-button-min-width,auto);min-height:var(--palmyit-button-min-height,auto);max-width:var(--palmyit-button-max-width,none);max-height:var(--palmyit-button-max-height,none);background-color:var(--plmt-theme-button-bg);cursor:pointer;box-sizing:border-box;text-decoration:none;display:inline-flex}.plmt-button[data-background]{background-color:var(--palmyit-button-background-color,transparent);background-image:var(--palmyit-button-background-image,none)}.plmt-text{min-width:0;color:var(--palmyit-text-color,inherit);font-family:var(--palmyit-text-font-family,inherit);font-size:var(--palmyit-text-font-size,14px);font-style:var(--palmyit-text-font-style,normal);font-weight:var(--palmyit-text-font-weight,inherit);line-height:var(--palmyit-text-line-height,1.4);letter-spacing:var(--palmyit-text-letter-spacing,normal);word-spacing:var(--palmyit-text-word-spacing,normal);-webkit-text-decoration-line:var(--palmyit-text-text-decoration,none);text-decoration-line:var(--palmyit-text-text-decoration,none);text-align:var(--palmyit-text-text-align,start);text-transform:var(--palmyit-text-text-transform,none);white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.plmt-text a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}.plmt-rich-text{min-width:0;color:inherit;font-size:14px;line-height:1.4}.plmt-rich-text p,.plmt-rich-text h2,.plmt-rich-text h3,.plmt-rich-text h4,.plmt-rich-text ul,.plmt-rich-text ol,.plmt-rich-text blockquote{margin:0}.plmt-rich-text h2{font-size:24px;line-height:1.3}.plmt-rich-text h3{font-size:20px;line-height:1.3}.plmt-rich-text h4{font-size:16px;line-height:1.4}.plmt-rich-text ul,.plmt-rich-text ol{padding-left:1.25em}.plmt-rich-text a{color:inherit;text-decoration:underline}img.plmt-image,.plmt-image>img{box-sizing:border-box;width:var(--palmyit-image-width,auto);height:var(--palmyit-image-height,auto);min-width:var(--palmyit-image-min-width,auto);min-height:var(--palmyit-image-min-height,auto);max-width:var(--palmyit-image-max-width,100%);max-height:var(--palmyit-image-max-height,none);border-width:var(--palmyit-image-border-width,0);border-style:var(--palmyit-image-border-style,solid);border-color:var(--palmyit-image-border-color,currentColor);border-top-left-radius:var(--palmyit-image-border-top-left-radius,0);border-top-right-radius:var(--palmyit-image-border-top-right-radius,0);border-bottom-right-radius:var(--palmyit-image-border-bottom-right-radius,0);border-bottom-left-radius:var(--palmyit-image-border-bottom-left-radius,0);display:block}a.plmt-image{color:inherit;text-decoration:none;display:inline-block}img.plmt-image[data-background],.plmt-image[data-background]>img{background-color:var(--palmyit-image-background-color,transparent);background-image:var(--palmyit-image-background-image,none)}video.plmt-video{width:100%;max-width:100%;height:auto;display:block}ul.plmt-list{overflow-wrap:anywhere;margin:0;padding-left:1.25em}.plmt-icon{vertical-align:middle;justify-content:center;align-items:center;width:1em;height:1em;font-size:24px;line-height:0;display:inline-flex}.plmt-divider{opacity:.35;border:none;border-top:1px solid;margin:.75em 0;display:block}.plmt-divider[data-size="1"]{width:4rem}.plmt-divider[data-size="2"]{width:8rem}.plmt-divider[data-size="3"]{width:16rem}.plmt-divider[data-size="4"],.plmt-divider:not([data-size]){width:100%}.plmt-table>table{border-collapse:collapse;width:100%}.plmt-table th,.plmt-table td{border:1px solid color-mix(in srgb, currentColor 20%, transparent);text-align:start;padding:.5em .75em}.plmt-text-field,.plmt-text-area,.plmt-checkbox,.plmt-radio,.plmt-select{display:block}.plmt-text-field label,.plmt-text-area label,.plmt-select label,.plmt-checkbox label{flex-direction:column;gap:.25em;display:flex}.plmt-text-field input,.plmt-text-area textarea,.plmt-select select{font:inherit;border:1px solid color-mix(in srgb, currentColor 25%, transparent);border-radius:var(--plmt-theme-radius);padding:.5em .75em}.plmt-checkbox label{flex-direction:row;align-items:center;gap:.5em}.plmt-radio fieldset{border:none;margin:0;padding:0}.plmt-radio legend{margin-bottom:.5em}.plmt-radio label{align-items:center;gap:.5em;margin-bottom:.25em;display:flex}
1
+ /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-content:""}}}@layer theme{:root,:host{--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:1.875rem;--text-4xl:2.25rem;--font-weight-thin:100;--font-weight-extralight:200;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--font-weight-black:900;--tracking-tight:-.025em;--leading-tight:1.25;--leading-snug:1.375;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--aspect-video:16 / 9;--default-font-family:var(--font-sans);--color-accent:#0f766e;--font-heading:var(--font-sans);--color-accent-50:#ecf4f3}@supports (color:color-mix(in lab, red, red)){:root,:host{--color-accent-50:color-mix(in oklab, var(--color-accent) 8%, white)}}:root,:host{--color-accent-100:#d9e9e8}@supports (color:color-mix(in lab, red, red)){:root,:host{--color-accent-100:color-mix(in oklab, var(--color-accent) 16%, white)}}:root,:host{--color-accent-700:#0c5e58}@supports (color:color-mix(in lab, red, red)){:root,:host{--color-accent-700:color-mix(in oklab, var(--color-accent) 80%, black)}}:root,:host{--color-accent-foreground:white}}@layer base{.plmt-page,.plmt-page *,.plmt-page :after,.plmt-page :before,.plmt-page ::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}.plmt-page ::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}.plmt-page{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--font-sans,system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}.plmt-page hr{height:0;color:inherit;border-top-width:1px}.plmt-page abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.plmt-page h1,.plmt-page h2,.plmt-page h3,.plmt-page h4,.plmt-page h5,.plmt-page h6{font-size:inherit;font-weight:inherit}.plmt-page a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}.plmt-page b,.plmt-page strong{font-weight:bolder}.plmt-page code,.plmt-page kbd,.plmt-page samp,.plmt-page pre{font-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}.plmt-page small{font-size:80%}.plmt-page sub,.plmt-page sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}.plmt-page sub{bottom:-.25em}.plmt-page sup{top:-.5em}.plmt-page table{text-indent:0;border-color:inherit;border-collapse:collapse}.plmt-page :-moz-focusring:where(:not(iframe)){outline:auto}.plmt-page progress{vertical-align:baseline}.plmt-page summary{display:list-item}.plmt-page ol,.plmt-page ul,.plmt-page menu{list-style:none}.plmt-page img,.plmt-page svg,.plmt-page video,.plmt-page canvas,.plmt-page audio,.plmt-page iframe,.plmt-page embed,.plmt-page object{vertical-align:middle;display:block}.plmt-page img,.plmt-page video{max-width:100%;height:auto}.plmt-page button,.plmt-page input,.plmt-page select,.plmt-page optgroup,.plmt-page textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}.plmt-page ::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}.plmt-page :where(select:is([multiple],[size])) optgroup{font-weight:bolder}.plmt-page :where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}.plmt-page ::file-selector-button{margin-inline-end:4px}.plmt-page ::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){.plmt-page ::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}.plmt-page textarea{resize:vertical}.plmt-page ::-webkit-search-decoration{-webkit-appearance:none}.plmt-page ::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}.plmt-page ::-webkit-datetime-edit{display:inline-flex}.plmt-page ::-webkit-datetime-edit-fields-wrapper{padding:0}.plmt-page ::-webkit-datetime-edit{padding-block:0}.plmt-page ::-webkit-datetime-edit-year-field{padding-block:0}.plmt-page ::-webkit-datetime-edit-month-field{padding-block:0}.plmt-page ::-webkit-datetime-edit-day-field{padding-block:0}.plmt-page ::-webkit-datetime-edit-hour-field{padding-block:0}.plmt-page ::-webkit-datetime-edit-minute-field{padding-block:0}.plmt-page ::-webkit-datetime-edit-second-field{padding-block:0}.plmt-page ::-webkit-datetime-edit-millisecond-field{padding-block:0}.plmt-page ::-webkit-datetime-edit-meridiem-field{padding-block:0}.plmt-page ::-webkit-calendar-picker-indicator{line-height:1}.plmt-page :-moz-ui-invalid{box-shadow:none}.plmt-page button,.plmt-page input:where([type=button],[type=reset],[type=submit]){appearance:button}.plmt-page ::file-selector-button{appearance:button}.plmt-page ::-webkit-inner-spin-button{height:auto}.plmt-page ::-webkit-outer-spin-button{height:auto}.plmt-page [hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components{.plmt-section[data-layout=flex]>*,.plmt-section[data-layout=grid]>*,.plmt-container[data-layout=flex]>*,.plmt-container[data-layout=grid]>*{min-width:0}.plmt-page a:focus-visible,.plmt-page button:focus-visible,.plmt-button:focus-visible,.plmt-nav a:focus-visible,.plmt-footer a:focus-visible{outline:2px solid var(--color-accent,#0f766e);outline-offset:2px}.plmt-page{min-height:100%;position:relative}.plmt-main{width:100%}.plmt-section{overflow-x:var(--palmyit-section-overflow-x,auto);overflow-y:var(--palmyit-section-overflow-y,auto);width:var(--palmyit-section-width,auto);height:var(--palmyit-section-height,auto);min-width:var(--palmyit-section-min-width,auto);min-height:var(--palmyit-section-min-height,auto);max-width:var(--palmyit-section-max-width,none);max-height:var(--palmyit-section-max-height,none);padding-top:var(--palmyit-section-padding-top,0);padding-bottom:var(--palmyit-section-padding-bottom,0);margin-top:var(--palmyit-section-margin-top,0);margin-bottom:var(--palmyit-section-margin-bottom,0);border-top-left-radius:var(--palmyit-section-border-top-left-radius,0);border-top-right-radius:var(--palmyit-section-border-top-right-radius,0);border-bottom-right-radius:var(--palmyit-section-border-bottom-right-radius,0);border-bottom-left-radius:var(--palmyit-section-border-bottom-left-radius,0);border-width:var(--palmyit-section-border-width,0);border-style:var(--palmyit-section-border-style,none);border-color:var(--palmyit-section-border-color,transparent);background-color:var(--palmyit-section-background-color,transparent);background-image:var(--palmyit-section-background-image,none);margin-inline-start:var(--palmyit-section-margin-left,0);margin-inline-end:var(--palmyit-section-margin-right,0);padding-inline-start:var(--palmyit-section-padding-left,0);padding-inline-end:var(--palmyit-section-padding-right,0)}.plmt-section[data-layout=block]{display:block}.plmt-section[data-layout=flex]{flex-direction:var(--palmyit-section-flex-direction,row);flex-wrap:var(--palmyit-section-flex-wrap,nowrap);justify-content:var(--palmyit-section-justify-content,flex-start);align-items:var(--palmyit-section-align-items,stretch);align-content:var(--palmyit-section-align-content,stretch);row-gap:var(--palmyit-section-row-gap,0);column-gap:var(--palmyit-section-column-gap,0);display:flex}.plmt-section[data-layout=grid]{grid-template-columns:var(--palmyit-section-grid-template-columns,none);row-gap:var(--palmyit-section-row-gap,0);column-gap:var(--palmyit-section-column-gap,0);display:grid}.plmt-container{overflow-x:var(--palmyit-container-overflow-x,auto);overflow-y:var(--palmyit-container-overflow-y,auto);width:var(--palmyit-container-width,auto);height:var(--palmyit-container-height,auto);min-width:var(--palmyit-container-min-width,0);min-height:var(--palmyit-container-min-height,auto);max-width:var(--palmyit-container-max-width,none);max-height:var(--palmyit-container-max-height,none);padding-top:var(--palmyit-container-padding-top,0);padding-bottom:var(--palmyit-container-padding-bottom,0);margin-top:var(--palmyit-container-margin-top,0);margin-bottom:var(--palmyit-container-margin-bottom,0);border-top-left-radius:var(--palmyit-container-border-top-left-radius,0);border-top-right-radius:var(--palmyit-container-border-top-right-radius,0);border-bottom-right-radius:var(--palmyit-container-border-bottom-right-radius,0);border-bottom-left-radius:var(--palmyit-container-border-bottom-left-radius,0);border-width:var(--palmyit-container-border-width,0);border-style:var(--palmyit-container-border-style,none);border-color:var(--palmyit-container-border-color,transparent);background-color:var(--palmyit-container-background-color,transparent);background-image:var(--palmyit-container-background-image,none);margin-inline-start:var(--palmyit-container-margin-left,0);margin-inline-end:var(--palmyit-container-margin-right,0);padding-inline-start:var(--palmyit-container-padding-left,0);padding-inline-end:var(--palmyit-container-padding-right,0)}.plmt-container[data-layout=block]{display:block}.plmt-container[data-layout=flex]{flex-direction:var(--palmyit-container-flex-direction,row);flex-wrap:var(--palmyit-container-flex-wrap,nowrap);justify-content:var(--palmyit-container-justify-content,flex-start);align-items:var(--palmyit-container-align-items,stretch);align-content:var(--palmyit-container-align-content,stretch);row-gap:var(--palmyit-container-row-gap,0);column-gap:var(--palmyit-container-column-gap,0);display:flex}.plmt-container[data-layout=grid]{grid-template-columns:var(--palmyit-container-grid-template-columns,none);row-gap:var(--palmyit-container-row-gap,0);column-gap:var(--palmyit-container-column-gap,0);display:grid}.plmt-nav{background-color:var(--color-white,#fff);width:100%}.plmt-nav-inner{height:100%}.plmt-nav-brand{align-items:center;gap:var(--spacing-2,.5rem);font-weight:var(--font-weight-semibold,600);color:inherit;margin-inline-end:auto;text-decoration:none;display:inline-flex}.plmt-nav-logo{width:auto;height:1.75rem}.plmt-nav-list{align-items:center;gap:var(--spacing-4,1rem);flex:1;margin:0;padding:0;list-style:none;display:flex}.plmt-nav-list a{color:inherit;text-decoration:none}.plmt-nav-list a[aria-current=page]{font-weight:var(--font-weight-semibold,600);text-underline-offset:.2em;text-decoration:underline}.plmt-nav-cta{border-radius:var(--radius-md,.375rem);background-color:var(--color-accent,#0f766e);color:var(--color-accent-foreground,#fff);font-weight:var(--font-weight-medium,500);align-items:center;padding:.375rem .75rem;text-decoration:none;display:inline-flex}.plmt-nav-menu{margin-inline-start:auto}.plmt-nav-menu-toggle{cursor:pointer;list-style:none}.plmt-nav-menu-toggle::-webkit-details-marker{display:none}.plmt-nav-menu>.plmt-nav-list{padding:var(--spacing-3,.75rem) 0;flex-direction:column;align-items:stretch}.plmt-nav-scroll{flex-wrap:nowrap;overflow-x:auto}.plmt-footer{border-top:1px solid var(--color-slate-200,#e2e8f0);width:100%;padding-block:var(--spacing-10,2.5rem);background-color:var(--palmyit-footer-background-color,transparent);background-image:var(--palmyit-footer-background-image,none);overflow-x:var(--palmyit-footer-overflow-x,auto);overflow-y:var(--palmyit-footer-overflow-y,auto)}.plmt-footer[data-layout=block]{display:block}.plmt-footer[data-layout=flex]{flex-direction:var(--palmyit-footer-flex-direction,row);flex-wrap:var(--palmyit-footer-flex-wrap,nowrap);justify-content:var(--palmyit-footer-justify-content,flex-start);align-items:var(--palmyit-footer-align-items,stretch);row-gap:var(--palmyit-footer-row-gap,0);column-gap:var(--palmyit-footer-column-gap,0);display:flex}.plmt-footer[data-layout=grid]{display:block}.plmt-footer-heading{margin:0 0 var(--spacing-3,.75rem);font-size:var(--text-sm,.875rem);font-weight:var(--font-weight-semibold,600)}.plmt-footer-links{gap:var(--spacing-2,.5rem);margin:0;padding:0;list-style:none;display:grid}.plmt-footer-links a,.plmt-footer-contact a,.plmt-footer-social a{color:inherit;text-decoration:none}.plmt-footer-contact{font-style:normal;font-size:var(--text-sm,.875rem);color:var(--color-slate-600,#475569)}.plmt-footer-social{gap:var(--spacing-3,.75rem);margin:0;padding:0;list-style:none;display:flex}.plmt-footer-social svg{width:1.25rem;height:1.25rem}.plmt-footer-copyright{margin:var(--spacing-8,2rem) 0 0;text-align:center;font-size:var(--text-sm,.875rem);color:var(--color-slate-500,#64748b)}.plmt-button{color:var(--palmyit-button-text-color,var(--color-accent,#0f766e));font-family:var(--palmyit-button-font-family,var(--plmt-theme-font-family));font-size:var(--palmyit-button-font-size,inherit);justify-content:center;align-items:center;gap:var(--palmyit-button-gap,var(--plmt-theme-space-2));border-width:var(--palmyit-button-border-width,0);border-style:var(--palmyit-button-border-style,solid);border-color:var(--palmyit-button-border-color,currentColor);border-top-left-radius:var(--palmyit-button-border-top-left-radius,.375rem);border-top-right-radius:var(--palmyit-button-border-top-right-radius,.375rem);border-bottom-right-radius:var(--palmyit-button-border-bottom-right-radius,.375rem);border-bottom-left-radius:var(--palmyit-button-border-bottom-left-radius,.375rem);padding-top:var(--palmyit-button-padding-top,0);padding-bottom:var(--palmyit-button-padding-bottom,0);margin-top:var(--palmyit-button-margin-top,0);margin-bottom:var(--palmyit-button-margin-bottom,0);width:var(--palmyit-button-width,auto);height:var(--palmyit-button-height,2.5rem);min-width:var(--palmyit-button-min-width,auto);min-height:var(--palmyit-button-min-height,auto);max-width:var(--palmyit-button-max-width,none);max-height:var(--palmyit-button-max-height,none);background-color:var(--palmyit-button-background-color,color-mix(in srgb, var(--color-accent,#0f766e) 10%, transparent));background-image:var(--palmyit-button-background-image,none);cursor:pointer;margin-inline-start:var(--palmyit-button-margin-left,0);margin-inline-end:var(--palmyit-button-margin-right,0);padding-inline-start:var(--palmyit-button-padding-left,.75rem);padding-inline-end:var(--palmyit-button-padding-right,.75rem);text-decoration:none;display:inline-flex}.plmt-button[data-background]{background-color:var(--palmyit-button-background-color,transparent);background-image:var(--palmyit-button-background-image,none)}.plmt-text{min-width:0;color:var(--palmyit-text-color,inherit);font-family:var(--palmyit-text-font-family,inherit);font-size:var(--palmyit-text-font-size,.875rem);font-style:var(--palmyit-text-font-style,normal);font-weight:var(--palmyit-text-font-weight,inherit);line-height:var(--palmyit-text-line-height,1.375);letter-spacing:var(--palmyit-text-letter-spacing,normal);word-spacing:var(--palmyit-text-word-spacing,normal);-webkit-text-decoration-line:var(--palmyit-text-text-decoration,none);text-decoration-line:var(--palmyit-text-text-decoration,none);text-align:var(--palmyit-text-text-align,start);text-transform:var(--palmyit-text-text-transform,none);margin:0}.plmt-text a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}.plmt-heading{min-width:0;color:var(--palmyit-heading-color,inherit);font-family:var(--palmyit-heading-font-family,var(--font-heading,inherit));font-style:var(--palmyit-heading-font-style,normal);font-weight:var(--palmyit-heading-font-weight,var(--font-weight-bold,700));line-height:var(--palmyit-heading-line-height,var(--leading-tight,1.25));letter-spacing:var(--palmyit-heading-letter-spacing,var(--tracking-tight,-.025em));word-spacing:var(--palmyit-heading-word-spacing,normal);-webkit-text-decoration-line:var(--palmyit-heading-text-decoration,none);text-decoration-line:var(--palmyit-heading-text-decoration,none);text-align:var(--palmyit-heading-text-align,start);text-transform:var(--palmyit-heading-text-transform,none);text-wrap:balance;margin:0}h1.plmt-heading{font-size:var(--palmyit-heading-font-size,var(--text-4xl,2.25rem))}h2.plmt-heading{font-size:var(--palmyit-heading-font-size,var(--text-3xl,1.875rem))}h3.plmt-heading{font-size:var(--palmyit-heading-font-size,var(--text-2xl,1.5rem))}h4.plmt-heading{font-size:var(--palmyit-heading-font-size,var(--text-xl,1.25rem))}h5.plmt-heading{font-size:var(--palmyit-heading-font-size,var(--text-lg,1.125rem))}h6.plmt-heading{font-size:var(--palmyit-heading-font-size,var(--text-base,1rem))}.plmt-heading a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}.plmt-rich-text{min-width:0;color:inherit;font-size:.875rem;line-height:1.375}.plmt-rich-text p,.plmt-rich-text h2,.plmt-rich-text h3,.plmt-rich-text h4,.plmt-rich-text ul,.plmt-rich-text ol,.plmt-rich-text blockquote{margin:0}.plmt-rich-text h2,.plmt-rich-text h3,.plmt-rich-text h4{font-family:var(--font-heading,inherit)}.plmt-rich-text h2{font-size:var(--text-2xl,1.5rem);line-height:1.3}.plmt-rich-text h3{font-size:var(--text-xl,1.25rem);line-height:1.3}.plmt-rich-text h4{font-size:var(--text-base,1rem);line-height:1.4}.plmt-rich-text ul,.plmt-rich-text ol{padding-inline-start:1.25em}.plmt-rich-text a{color:inherit;text-decoration:underline}img.plmt-image,.plmt-image>img,.plmt-image picture>img{width:var(--palmyit-image-width,auto);height:var(--palmyit-image-height,auto);min-width:var(--palmyit-image-min-width,auto);min-height:var(--palmyit-image-min-height,auto);max-width:var(--palmyit-image-max-width,100%);max-height:var(--palmyit-image-max-height,none);border-width:var(--palmyit-image-border-width,0);border-style:var(--palmyit-image-border-style,solid);border-color:var(--palmyit-image-border-color,currentColor);border-top-left-radius:var(--palmyit-image-border-top-left-radius,0);border-top-right-radius:var(--palmyit-image-border-top-right-radius,0);border-bottom-right-radius:var(--palmyit-image-border-bottom-right-radius,0);border-bottom-left-radius:var(--palmyit-image-border-bottom-left-radius,0)}a.plmt-image,div.plmt-image,figure.plmt-image{color:inherit;max-width:100%;text-decoration:none;display:block}figure.plmt-image>figcaption{margin-top:var(--spacing-2,.5rem);font-size:var(--text-sm,.875rem);color:var(--color-slate-500,#64748b);text-align:start}figure.plmt-image[data-caption-align=center]>figcaption{text-align:center}img.plmt-image[data-background],.plmt-image[data-background]>img,.plmt-image[data-background] picture>img,img.plmt-image,.plmt-image>img,.plmt-image picture>img{background-color:var(--palmyit-image-background-color,transparent);background-image:var(--palmyit-image-background-image,none)}figure.plmt-video{max-width:100%;margin:0;overflow:hidden}figure.plmt-video>video,figure.plmt-video>iframe{border:0;width:100%;height:100%;display:block}figure.plmt-video>figcaption{margin-top:var(--spacing-2,.5rem);font-size:var(--text-sm,.875rem);color:var(--color-slate-500,#64748b)}ul.plmt-list,ol.plmt-list{overflow-wrap:anywhere;margin:0;padding-inline-start:1.25em}.plmt-icon{vertical-align:middle;width:1em;height:1em;color:inherit;font-size:24px;line-height:0;display:inline-block}.plmt-icon[data-size=small]{font-size:16px}.plmt-icon[data-size=medium]{font-size:20px}.plmt-icon[data-size=large]{font-size:24px}.plmt-icon>svg{width:100%;height:100%;display:block}.plmt-divider{opacity:.35;border:none;border-top:1px solid;margin:.75em 0}.plmt-divider[data-size="1"]{width:4rem}.plmt-divider[data-size="2"]{width:8rem}.plmt-divider[data-size="3"]{width:16rem}.plmt-divider[data-size="4"],.plmt-divider:not([data-size]){width:100%}.plmt-table{overflow-x:auto}.plmt-table>table{border-collapse:collapse;width:100%}.plmt-table th,.plmt-table td{border:1px solid color-mix(in srgb, currentColor 20%, transparent);text-align:start;padding:.5em .75em}.plmt-article{gap:var(--spacing-4,1rem);border-radius:var(--radius-lg,.5rem);background-color:var(--color-white,#fff);overflow:hidden}.plmt-article-media{flex-shrink:0;overflow:hidden}.plmt-article[data-layout=horizontal]>.plmt-article-media{width:40%}.plmt-article-media>img{width:100%;height:100%;display:block}.plmt-article-meta{gap:var(--spacing-2,.5rem);font-size:var(--text-sm,.875rem);color:var(--color-slate-500,#64748b);flex-wrap:wrap;display:flex}.plmt-article-title{font-family:var(--font-heading,inherit);font-size:var(--text-xl,1.25rem);font-weight:var(--font-weight-semibold,600);line-height:var(--leading-snug,1.375);margin:0}.plmt-article-title-link{color:inherit;text-decoration:none}.plmt-article-excerpt{color:var(--color-slate-600,#475569);margin:0}.plmt-article-tags{gap:var(--spacing-2,.5rem);font-size:var(--text-xs,.75rem);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.plmt-article-tags>li{border-radius:var(--radius-full,9999px);background-color:var(--color-slate-100,#f1f5f9);padding:.125rem .5rem}.plmt-article-link{z-index:1;color:var(--color-accent,#0f766e);font-weight:var(--font-weight-medium,500);text-decoration:none;position:relative}.plmt-text-field label,.plmt-text-area label,.plmt-select label,.plmt-checkbox label{flex-direction:column;gap:.25em;display:flex}.plmt-text-field input,.plmt-text-area textarea,.plmt-select select{font:inherit;border:1px solid color-mix(in srgb, currentColor 25%, transparent);border-radius:var(--plmt-theme-radius);padding:.5em .75em}.plmt-checkbox label{flex-direction:row;align-items:center;gap:.5em}.plmt-radio{border:none;margin:0;padding:0}.plmt-radio legend{margin-bottom:.5em}.plmt-radio label{align-items:center;gap:.5em;margin-bottom:.25em;display:flex}}@layer utilities{.plmt-page .collapse{visibility:collapse}.plmt-page .absolute{position:absolute}.plmt-page .relative{position:relative}.plmt-page .static{position:static}.plmt-page .sticky{position:sticky}.plmt-page .inset-x-0{inset-inline:0}.plmt-page .top-0{top:0}.plmt-page .z-40{z-index:40}.plmt-page .container{width:100%}@media (width>=40rem){.plmt-page .container{max-width:40rem}}@media (width>=48rem){.plmt-page .container{max-width:48rem}}@media (width>=64rem){.plmt-page .container{max-width:64rem}}@media (width>=80rem){.plmt-page .container{max-width:80rem}}@media (width>=96rem){.plmt-page .container{max-width:96rem}}.plmt-page .mx-auto{margin-inline:auto}.plmt-page .line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.plmt-page .line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.plmt-page .line-clamp-4{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.plmt-page .block{display:block}.plmt-page .contents{display:contents}.plmt-page .flex{display:flex}.plmt-page .grid{display:grid}.plmt-page .hidden{display:none}.plmt-page .inline{display:inline}.plmt-page .inline-block{display:inline-block}.plmt-page .inline-flex{display:inline-flex}.plmt-page .table{display:table}.plmt-page .aspect-3\/4{aspect-ratio:3/4}.plmt-page .aspect-4\/3{aspect-ratio:4/3}.plmt-page .aspect-9\/16{aspect-ratio:9/16}.plmt-page .aspect-square{aspect-ratio:1}.plmt-page .aspect-video{aspect-ratio:var(--aspect-video)}.plmt-page .size-full{width:100%;height:100%}.plmt-page .h-10{height:calc(var(--spacing) * 10)}.plmt-page .h-14{height:calc(var(--spacing) * 14)}.plmt-page .h-16{height:calc(var(--spacing) * 16)}.plmt-page .h-20{height:calc(var(--spacing) * 20)}.plmt-page .h-auto{height:auto}.plmt-page .w-full{width:100%}.plmt-page .max-w-\(--plmt-content-width\){max-width:var(--plmt-content-width)}.plmt-page .max-w-full{max-width:100%}.plmt-page .max-w-none{max-width:none}.plmt-page .transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.plmt-page .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.plmt-page .grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.plmt-page .grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.plmt-page .grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.plmt-page .flex-col{flex-direction:column}.plmt-page .flex-col-reverse{flex-direction:column-reverse}.plmt-page .flex-row{flex-direction:row}.plmt-page .flex-row-reverse{flex-direction:row-reverse}.plmt-page .flex-nowrap{flex-wrap:nowrap}.plmt-page .flex-wrap{flex-wrap:wrap}.plmt-page .items-center{align-items:center}.plmt-page .items-end{align-items:flex-end}.plmt-page .items-start{align-items:flex-start}.plmt-page .items-stretch{align-items:stretch}.plmt-page .justify-between{justify-content:space-between}.plmt-page .justify-center{justify-content:center}.plmt-page .justify-end{justify-content:flex-end}.plmt-page .justify-start{justify-content:flex-start}.plmt-page .gap-4{gap:calc(var(--spacing) * 4)}.plmt-page .gap-6{gap:calc(var(--spacing) * 6)}.plmt-page .overflow-auto{overflow:auto}.plmt-page .overflow-hidden{overflow:hidden}.plmt-page .rounded{border-radius:.25rem}.plmt-page .rounded-md{border-radius:var(--radius-md)}.plmt-page .rounded-none{border-radius:0}.plmt-page .border{border-style:var(--tw-border-style);border-width:1px}.plmt-page .border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.plmt-page .border-slate-200{border-color:var(--color-slate-200)}.plmt-page .bg-accent\/10{background-color:#0f766e1a}@supports (color:color-mix(in lab, red, red)){.plmt-page .bg-accent\/10{background-color:color-mix(in oklab, var(--color-accent) 10%, transparent)}}.plmt-page .bg-white\/80{background-color:#fffc}@supports (color:color-mix(in lab, red, red)){.plmt-page .bg-white\/80{background-color:color-mix(in oklab, var(--color-white) 80%, transparent)}}.plmt-page .object-contain{object-fit:contain}.plmt-page .object-cover{object-fit:cover}.plmt-page .object-bottom{object-position:bottom}.plmt-page .object-center{object-position:center}.plmt-page .object-left{object-position:left}.plmt-page .object-left-bottom{object-position:left bottom}.plmt-page .object-left-top{object-position:left top}.plmt-page .object-right{object-position:right}.plmt-page .object-right-bottom{object-position:right bottom}.plmt-page .object-right-top{object-position:right top}.plmt-page .object-top{object-position:top}.plmt-page .px-3{padding-inline:calc(var(--spacing) * 3)}.plmt-page .px-6{padding-inline:calc(var(--spacing) * 6)}.plmt-page .pt-4{padding-top:calc(var(--spacing) * 4)}.plmt-page .pl-4{padding-left:calc(var(--spacing) * 4)}.plmt-page .text-center{text-align:center}.plmt-page .text-end{text-align:end}.plmt-page .text-justify{text-align:justify}.plmt-page .text-left{text-align:left}.plmt-page .text-right{text-align:right}.plmt-page .text-start{text-align:start}.plmt-page .text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.plmt-page .leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.plmt-page .font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.plmt-page .font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.plmt-page .font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.plmt-page .font-extralight{--tw-font-weight:var(--font-weight-extralight);font-weight:var(--font-weight-extralight)}.plmt-page .font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.plmt-page .font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.plmt-page .font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.plmt-page .font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.plmt-page .font-thin{--tw-font-weight:var(--font-weight-thin);font-weight:var(--font-weight-thin)}.plmt-page .break-words{overflow-wrap:break-word}.plmt-page .whitespace-pre-wrap{white-space:pre-wrap}.plmt-page .text-accent{color:var(--color-accent)}.plmt-page .text-slate-700{color:var(--color-slate-700)}.plmt-page .capitalize{text-transform:capitalize}.plmt-page .lowercase{text-transform:lowercase}.plmt-page .uppercase{text-transform:uppercase}.plmt-page .italic{font-style:italic}.plmt-page .not-italic{font-style:normal}.plmt-page .line-through{text-decoration-line:line-through}.plmt-page .overline{text-decoration-line:overline}.plmt-page .underline{text-decoration-line:underline}.plmt-page .shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.plmt-page .shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.plmt-page .shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.plmt-page .shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.plmt-page .shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.plmt-page .outline{outline-style:var(--tw-outline-style);outline-width:1px}.plmt-page .backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.plmt-page .after\:absolute:after{content:var(--tw-content);position:absolute}.plmt-page .after\:inset-0:after{content:var(--tw-content);inset:0}@media (width<=1279px){.plmt-page .tablet\:absolute{position:absolute}.plmt-page .tablet\:relative{position:relative}.plmt-page .tablet\:sticky{position:sticky}.plmt-page .tablet\:line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.plmt-page .tablet\:line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.plmt-page .tablet\:line-clamp-4{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.plmt-page .tablet\:block{display:block}.plmt-page .tablet\:flex{display:flex}.plmt-page .tablet\:grid{display:grid}.plmt-page .tablet\:hidden{display:none}.plmt-page .tablet\:inline-block{display:inline-block}.plmt-page .tablet\:inline-flex{display:inline-flex}.plmt-page .tablet\:aspect-3\/4{aspect-ratio:3/4}.plmt-page .tablet\:aspect-4\/3{aspect-ratio:4/3}.plmt-page .tablet\:aspect-9\/16{aspect-ratio:9/16}.plmt-page .tablet\:aspect-square{aspect-ratio:1}.plmt-page .tablet\:aspect-video{aspect-ratio:var(--aspect-video)}.plmt-page .tablet\:size-full{width:100%;height:100%}.plmt-page .tablet\:h-auto{height:auto}.plmt-page .tablet\:w-full{width:100%}.plmt-page .tablet\:max-w-full{max-width:100%}.plmt-page .tablet\:max-w-none{max-width:none}.plmt-page .tablet\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.plmt-page .tablet\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.plmt-page .tablet\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.plmt-page .tablet\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.plmt-page .tablet\:flex-col{flex-direction:column}.plmt-page .tablet\:flex-col-reverse{flex-direction:column-reverse}.plmt-page .tablet\:flex-row{flex-direction:row}.plmt-page .tablet\:flex-row-reverse{flex-direction:row-reverse}.plmt-page .tablet\:flex-nowrap{flex-wrap:nowrap}.plmt-page .tablet\:flex-wrap{flex-wrap:wrap}.plmt-page .tablet\:items-center{align-items:center}.plmt-page .tablet\:items-end{align-items:flex-end}.plmt-page .tablet\:items-start{align-items:flex-start}.plmt-page .tablet\:items-stretch{align-items:stretch}.plmt-page .tablet\:justify-between{justify-content:space-between}.plmt-page .tablet\:justify-center{justify-content:center}.plmt-page .tablet\:justify-end{justify-content:flex-end}.plmt-page .tablet\:justify-start{justify-content:flex-start}.plmt-page .tablet\:overflow-auto{overflow:auto}.plmt-page .tablet\:overflow-hidden{overflow:hidden}.plmt-page .tablet\:object-contain{object-fit:contain}.plmt-page .tablet\:object-cover{object-fit:cover}.plmt-page .tablet\:object-bottom{object-position:bottom}.plmt-page .tablet\:object-center{object-position:center}.plmt-page .tablet\:object-left{object-position:left}.plmt-page .tablet\:object-left-bottom{object-position:left bottom}.plmt-page .tablet\:object-left-top{object-position:left top}.plmt-page .tablet\:object-right{object-position:right}.plmt-page .tablet\:object-right-bottom{object-position:right bottom}.plmt-page .tablet\:object-right-top{object-position:right top}.plmt-page .tablet\:object-top{object-position:top}.plmt-page .tablet\:pt-2{padding-top:calc(var(--spacing) * 2)}.plmt-page .tablet\:text-center{text-align:center}.plmt-page .tablet\:text-end{text-align:end}.plmt-page .tablet\:text-justify{text-align:justify}.plmt-page .tablet\:text-left{text-align:left}.plmt-page .tablet\:text-right{text-align:right}.plmt-page .tablet\:text-start{text-align:start}.plmt-page .tablet\:break-words{overflow-wrap:break-word}.plmt-page .tablet\:whitespace-pre-wrap{white-space:pre-wrap}.plmt-page .tablet\:shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.plmt-page .tablet\:shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.plmt-page .tablet\:shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.plmt-page .tablet\:shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}@media (width>=768px) and (width<=1279px) and (orientation:landscape){.plmt-page .tablet-landscape\:absolute{position:absolute}.plmt-page .tablet-landscape\:relative{position:relative}.plmt-page .tablet-landscape\:sticky{position:sticky}.plmt-page .tablet-landscape\:line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.plmt-page .tablet-landscape\:line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.plmt-page .tablet-landscape\:line-clamp-4{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.plmt-page .tablet-landscape\:block{display:block}.plmt-page .tablet-landscape\:flex{display:flex}.plmt-page .tablet-landscape\:grid{display:grid}.plmt-page .tablet-landscape\:hidden{display:none}.plmt-page .tablet-landscape\:inline-block{display:inline-block}.plmt-page .tablet-landscape\:inline-flex{display:inline-flex}.plmt-page .tablet-landscape\:aspect-3\/4{aspect-ratio:3/4}.plmt-page .tablet-landscape\:aspect-4\/3{aspect-ratio:4/3}.plmt-page .tablet-landscape\:aspect-9\/16{aspect-ratio:9/16}.plmt-page .tablet-landscape\:aspect-square{aspect-ratio:1}.plmt-page .tablet-landscape\:aspect-video{aspect-ratio:var(--aspect-video)}.plmt-page .tablet-landscape\:size-full{width:100%;height:100%}.plmt-page .tablet-landscape\:h-auto{height:auto}.plmt-page .tablet-landscape\:w-full{width:100%}.plmt-page .tablet-landscape\:max-w-full{max-width:100%}.plmt-page .tablet-landscape\:max-w-none{max-width:none}.plmt-page .tablet-landscape\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.plmt-page .tablet-landscape\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.plmt-page .tablet-landscape\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.plmt-page .tablet-landscape\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.plmt-page .tablet-landscape\:flex-col{flex-direction:column}.plmt-page .tablet-landscape\:flex-col-reverse{flex-direction:column-reverse}.plmt-page .tablet-landscape\:flex-row{flex-direction:row}.plmt-page .tablet-landscape\:flex-row-reverse{flex-direction:row-reverse}.plmt-page .tablet-landscape\:flex-nowrap{flex-wrap:nowrap}.plmt-page .tablet-landscape\:flex-wrap{flex-wrap:wrap}.plmt-page .tablet-landscape\:items-center{align-items:center}.plmt-page .tablet-landscape\:items-end{align-items:flex-end}.plmt-page .tablet-landscape\:items-start{align-items:flex-start}.plmt-page .tablet-landscape\:items-stretch{align-items:stretch}.plmt-page .tablet-landscape\:justify-between{justify-content:space-between}.plmt-page .tablet-landscape\:justify-center{justify-content:center}.plmt-page .tablet-landscape\:justify-end{justify-content:flex-end}.plmt-page .tablet-landscape\:justify-start{justify-content:flex-start}.plmt-page .tablet-landscape\:overflow-auto{overflow:auto}.plmt-page .tablet-landscape\:overflow-hidden{overflow:hidden}.plmt-page .tablet-landscape\:object-contain{object-fit:contain}.plmt-page .tablet-landscape\:object-cover{object-fit:cover}.plmt-page .tablet-landscape\:object-bottom{object-position:bottom}.plmt-page .tablet-landscape\:object-center{object-position:center}.plmt-page .tablet-landscape\:object-left{object-position:left}.plmt-page .tablet-landscape\:object-left-bottom{object-position:left bottom}.plmt-page .tablet-landscape\:object-left-top{object-position:left top}.plmt-page .tablet-landscape\:object-right{object-position:right}.plmt-page .tablet-landscape\:object-right-bottom{object-position:right bottom}.plmt-page .tablet-landscape\:object-right-top{object-position:right top}.plmt-page .tablet-landscape\:object-top{object-position:top}.plmt-page .tablet-landscape\:text-center{text-align:center}.plmt-page .tablet-landscape\:text-end{text-align:end}.plmt-page .tablet-landscape\:text-justify{text-align:justify}.plmt-page .tablet-landscape\:text-left{text-align:left}.plmt-page .tablet-landscape\:text-right{text-align:right}.plmt-page .tablet-landscape\:text-start{text-align:start}.plmt-page .tablet-landscape\:break-words{overflow-wrap:break-word}.plmt-page .tablet-landscape\:whitespace-pre-wrap{white-space:pre-wrap}.plmt-page .tablet-landscape\:shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.plmt-page .tablet-landscape\:shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.plmt-page .tablet-landscape\:shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.plmt-page .tablet-landscape\:shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}@media (width<=767px){.plmt-page .mobile\:absolute{position:absolute}.plmt-page .mobile\:relative{position:relative}.plmt-page .mobile\:sticky{position:sticky}.plmt-page .mobile\:line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.plmt-page .mobile\:line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.plmt-page .mobile\:line-clamp-4{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.plmt-page .mobile\:block{display:block}.plmt-page .mobile\:flex{display:flex}.plmt-page .mobile\:grid{display:grid}.plmt-page .mobile\:hidden{display:none}.plmt-page .mobile\:inline-block{display:inline-block}.plmt-page .mobile\:inline-flex{display:inline-flex}.plmt-page .mobile\:aspect-3\/4{aspect-ratio:3/4}.plmt-page .mobile\:aspect-4\/3{aspect-ratio:4/3}.plmt-page .mobile\:aspect-9\/16{aspect-ratio:9/16}.plmt-page .mobile\:aspect-square{aspect-ratio:1}.plmt-page .mobile\:aspect-video{aspect-ratio:var(--aspect-video)}.plmt-page .mobile\:size-full{width:100%;height:100%}.plmt-page .mobile\:h-auto{height:auto}.plmt-page .mobile\:w-full{width:100%}.plmt-page .mobile\:max-w-full{max-width:100%}.plmt-page .mobile\:max-w-none{max-width:none}.plmt-page .mobile\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.plmt-page .mobile\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.plmt-page .mobile\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.plmt-page .mobile\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.plmt-page .mobile\:flex-col{flex-direction:column}.plmt-page .mobile\:flex-col-reverse{flex-direction:column-reverse}.plmt-page .mobile\:flex-row{flex-direction:row}.plmt-page .mobile\:flex-row-reverse{flex-direction:row-reverse}.plmt-page .mobile\:flex-nowrap{flex-wrap:nowrap}.plmt-page .mobile\:flex-wrap{flex-wrap:wrap}.plmt-page .mobile\:items-center{align-items:center}.plmt-page .mobile\:items-end{align-items:flex-end}.plmt-page .mobile\:items-start{align-items:flex-start}.plmt-page .mobile\:items-stretch{align-items:stretch}.plmt-page .mobile\:justify-between{justify-content:space-between}.plmt-page .mobile\:justify-center{justify-content:center}.plmt-page .mobile\:justify-end{justify-content:flex-end}.plmt-page .mobile\:justify-start{justify-content:flex-start}.plmt-page .mobile\:overflow-auto{overflow:auto}.plmt-page .mobile\:overflow-hidden{overflow:hidden}.plmt-page .mobile\:object-contain{object-fit:contain}.plmt-page .mobile\:object-cover{object-fit:cover}.plmt-page .mobile\:object-bottom{object-position:bottom}.plmt-page .mobile\:object-center{object-position:center}.plmt-page .mobile\:object-left{object-position:left}.plmt-page .mobile\:object-left-bottom{object-position:left bottom}.plmt-page .mobile\:object-left-top{object-position:left top}.plmt-page .mobile\:object-right{object-position:right}.plmt-page .mobile\:object-right-bottom{object-position:right bottom}.plmt-page .mobile\:object-right-top{object-position:right top}.plmt-page .mobile\:object-top{object-position:top}.plmt-page .mobile\:text-center{text-align:center}.plmt-page .mobile\:text-end{text-align:end}.plmt-page .mobile\:text-justify{text-align:justify}.plmt-page .mobile\:text-left{text-align:left}.plmt-page .mobile\:text-right{text-align:right}.plmt-page .mobile\:text-start{text-align:start}.plmt-page .mobile\:break-words{overflow-wrap:break-word}.plmt-page .mobile\:whitespace-pre-wrap{white-space:pre-wrap}.plmt-page .mobile\:shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.plmt-page .mobile\:shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.plmt-page .mobile\:shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.plmt-page .mobile\:shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}@media (width<=767px) and (orientation:landscape){.plmt-page .mobile-landscape\:absolute{position:absolute}.plmt-page .mobile-landscape\:relative{position:relative}.plmt-page .mobile-landscape\:sticky{position:sticky}.plmt-page .mobile-landscape\:line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.plmt-page .mobile-landscape\:line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.plmt-page .mobile-landscape\:line-clamp-4{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.plmt-page .mobile-landscape\:block{display:block}.plmt-page .mobile-landscape\:flex{display:flex}.plmt-page .mobile-landscape\:grid{display:grid}.plmt-page .mobile-landscape\:hidden{display:none}.plmt-page .mobile-landscape\:inline-block{display:inline-block}.plmt-page .mobile-landscape\:inline-flex{display:inline-flex}.plmt-page .mobile-landscape\:aspect-3\/4{aspect-ratio:3/4}.plmt-page .mobile-landscape\:aspect-4\/3{aspect-ratio:4/3}.plmt-page .mobile-landscape\:aspect-9\/16{aspect-ratio:9/16}.plmt-page .mobile-landscape\:aspect-square{aspect-ratio:1}.plmt-page .mobile-landscape\:aspect-video{aspect-ratio:var(--aspect-video)}.plmt-page .mobile-landscape\:size-full{width:100%;height:100%}.plmt-page .mobile-landscape\:h-auto{height:auto}.plmt-page .mobile-landscape\:w-full{width:100%}.plmt-page .mobile-landscape\:max-w-full{max-width:100%}.plmt-page .mobile-landscape\:max-w-none{max-width:none}.plmt-page .mobile-landscape\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.plmt-page .mobile-landscape\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.plmt-page .mobile-landscape\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.plmt-page .mobile-landscape\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.plmt-page .mobile-landscape\:flex-col{flex-direction:column}.plmt-page .mobile-landscape\:flex-col-reverse{flex-direction:column-reverse}.plmt-page .mobile-landscape\:flex-row{flex-direction:row}.plmt-page .mobile-landscape\:flex-row-reverse{flex-direction:row-reverse}.plmt-page .mobile-landscape\:flex-nowrap{flex-wrap:nowrap}.plmt-page .mobile-landscape\:flex-wrap{flex-wrap:wrap}.plmt-page .mobile-landscape\:items-center{align-items:center}.plmt-page .mobile-landscape\:items-end{align-items:flex-end}.plmt-page .mobile-landscape\:items-start{align-items:flex-start}.plmt-page .mobile-landscape\:items-stretch{align-items:stretch}.plmt-page .mobile-landscape\:justify-between{justify-content:space-between}.plmt-page .mobile-landscape\:justify-center{justify-content:center}.plmt-page .mobile-landscape\:justify-end{justify-content:flex-end}.plmt-page .mobile-landscape\:justify-start{justify-content:flex-start}.plmt-page .mobile-landscape\:overflow-auto{overflow:auto}.plmt-page .mobile-landscape\:overflow-hidden{overflow:hidden}.plmt-page .mobile-landscape\:object-contain{object-fit:contain}.plmt-page .mobile-landscape\:object-cover{object-fit:cover}.plmt-page .mobile-landscape\:object-bottom{object-position:bottom}.plmt-page .mobile-landscape\:object-center{object-position:center}.plmt-page .mobile-landscape\:object-left{object-position:left}.plmt-page .mobile-landscape\:object-left-bottom{object-position:left bottom}.plmt-page .mobile-landscape\:object-left-top{object-position:left top}.plmt-page .mobile-landscape\:object-right{object-position:right}.plmt-page .mobile-landscape\:object-right-bottom{object-position:right bottom}.plmt-page .mobile-landscape\:object-right-top{object-position:right top}.plmt-page .mobile-landscape\:object-top{object-position:top}.plmt-page .mobile-landscape\:text-center{text-align:center}.plmt-page .mobile-landscape\:text-end{text-align:end}.plmt-page .mobile-landscape\:text-justify{text-align:justify}.plmt-page .mobile-landscape\:text-left{text-align:left}.plmt-page .mobile-landscape\:text-right{text-align:right}.plmt-page .mobile-landscape\:text-start{text-align:start}.plmt-page .mobile-landscape\:break-words{overflow-wrap:break-word}.plmt-page .mobile-landscape\:whitespace-pre-wrap{white-space:pre-wrap}.plmt-page .mobile-landscape\:shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.plmt-page .mobile-landscape\:shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.plmt-page .mobile-landscape\:shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.plmt-page .mobile-landscape\:shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}.plmt-page{--plmt-theme-font-family:var(--font-sans,system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif);--plmt-theme-font-size:var(--text-base,1rem);--plmt-theme-text-color:var(--color-slate-700,#334155);--plmt-theme-accent-color:var(--color-accent,#0f766e);--plmt-theme-accent-text:var(--color-accent,#0f766e);--plmt-theme-radius:var(--radius-md,.375rem);--plmt-theme-radius-full:9999px;--plmt-theme-space-2:.5rem;--plmt-theme-space-3:.75rem;--plmt-theme-button-height:2.5rem;--plmt-theme-button-bg:color-mix(in srgb, var(--plmt-theme-accent-color) 12%, transparent);font-family:var(--palmyit-page-font-family,var(--plmt-theme-font-family));font-size:var(--palmyit-page-font-size,var(--plmt-theme-font-size));line-height:var(--palmyit-page-line-height,inherit);color:var(--palmyit-page-text-color,var(--plmt-theme-text-color));background-color:var(--palmyit-page-background-color,transparent)}.plmt-page[data-link-underline=always] a{text-underline-offset:.2em;text-decoration:underline}.plmt-page[data-link-underline=hover] a{text-decoration:none}.plmt-page[data-link-underline=hover] a:hover{text-underline-offset:.2em;text-decoration:underline}.plmt-page[data-link-underline=never] a{text-decoration:none}
2
3
  /*$vite$:1*/
@@ -1,5 +1,5 @@
1
1
  import { ElementSpec } from './types';
2
2
  export declare function escapeHtml(value: unknown): string;
3
- /** Drop script/style blocks, event handlers, and javascript: URLs from rich text. */
3
+ /** Allowlist-sanitize rich text; demote h1 to h2; drop scripts and handlers. */
4
4
  export declare function sanitizeRichTextHtml(html: string): string;
5
5
  export declare function renderHtml(node: ElementSpec | string): string;
@@ -0,0 +1,34 @@
1
+ import { ElementType } from '../schema/elementConfiguration';
2
+ export type DeviceStyleProps = {
3
+ style?: Record<string, unknown>;
4
+ tabletStyle?: Record<string, unknown>;
5
+ mobileStyle?: Record<string, unknown>;
6
+ tabletLandscapeStyle?: Record<string, unknown>;
7
+ mobileLandscapeStyle?: Record<string, unknown>;
8
+ };
9
+ type VariantPrefix = '' | 'tablet:' | 'mobile:' | 'tablet-landscape:' | 'mobile-landscape:';
10
+ /**
11
+ * Authored style keys become CSS variables (via unresolvedStyleForVars).
12
+ * No property utilities — those lost to @layer components and fought defaults.
13
+ */
14
+ export declare function styleObjectToClasses(_type: ElementType, style: Record<string, unknown> | undefined, _variant?: VariantPrefix): {
15
+ classes: string[];
16
+ unresolved: Record<string, unknown>;
17
+ };
18
+ /**
19
+ * Classes for an element: structural type defaults only.
20
+ * Device style overrides are applied as CSS variables by renderDeviceCss.
21
+ */
22
+ export declare function styleToClasses(type: ElementType, _props: DeviceStyleProps): string[];
23
+ /**
24
+ * Style keys that need --palmyit-* variables. Every authored key is included so
25
+ * on-scale tokens and off-scale lengths both reach the element CSS.
26
+ */
27
+ export declare function unresolvedStyleForVars(type: ElementType, style: Record<string, unknown> | undefined): Record<string, unknown>;
28
+ /** Convert page style tokens into values styleToCssVariables can write. */
29
+ export declare function pageTokensToVarValues(props: {
30
+ backgroundColor?: unknown;
31
+ textColor?: unknown;
32
+ textSize?: unknown;
33
+ }): Record<string, unknown>;
34
+ export {};
@@ -1,2 +1,4 @@
1
1
  import { CssVariables } from './types';
2
+ /** Expand composite keys and drop attribute-only keys before writing variables. */
3
+ export declare function expandStyleForVars(style: Record<string, unknown>): Record<string, unknown>;
2
4
  export declare function styleToCssVariables(style: Record<string, unknown> | undefined, prefix: string): CssVariables;
@@ -0,0 +1,67 @@
1
+ /** Spacing / sizing keys on Tailwind's default scale, plus auto. */
2
+ export declare const SPACING_TOKENS: readonly ["0", "px", "0.5", "1", "1.5", "2", "2.5", "3", "3.5", "4", "5", "6", "7", "8", "9", "10", "11", "12", "14", "16", "20", "24", "28", "32", "36", "40", "44", "48", "52", "56", "60", "64", "72", "80", "96", "auto"];
3
+ export type SpacingToken = (typeof SPACING_TOKENS)[number];
4
+ export declare const BORDER_WIDTH_TOKENS: readonly ["0", "1", "2", "4", "8"];
5
+ export type BorderWidthToken = (typeof BORDER_WIDTH_TOKENS)[number];
6
+ export declare const RADIUS_TOKENS: readonly ["none", "sm", "md", "lg", "xl", "2xl", "3xl", "full", "0", "px", "0.5", "1", "1.5", "2", "2.5", "3", "3.5", "4", "5", "6", "7", "8", "9", "10", "11", "12", "14", "16"];
7
+ export type RadiusToken = (typeof RADIUS_TOKENS)[number];
8
+ export declare const TEXT_SIZE_TOKENS: readonly ["xs", "sm", "base", "lg", "xl", "2xl", "3xl", "4xl", "5xl", "6xl"];
9
+ export type TextSizeToken = (typeof TEXT_SIZE_TOKENS)[number];
10
+ export declare const LEADING_TOKENS: readonly ["none", "tight", "snug", "normal", "relaxed", "loose", "3", "4", "5", "6", "7", "8", "9", "10"];
11
+ export type LeadingToken = (typeof LEADING_TOKENS)[number];
12
+ export declare const TRACKING_TOKENS: readonly ["tighter", "tight", "normal", "wide", "wider", "widest"];
13
+ export type TrackingToken = (typeof TRACKING_TOKENS)[number];
14
+ export declare const COLOR_NAMES: readonly ["accent", "accent-50", "accent-100", "accent-700", "accent-foreground", "transparent", "white", "black", "slate-50", "slate-100", "slate-200", "slate-300", "slate-400", "slate-500", "slate-600", "slate-700", "slate-800", "slate-900", "slate-950"];
15
+ export type ColorName = (typeof COLOR_NAMES)[number];
16
+ export declare const OPACITY_STEPS: readonly [0, 5, 10, 15, 20, 25, 30, 40, 50, 60, 70, 75, 80, 90, 95, 100];
17
+ export type OpacityStep = (typeof OPACITY_STEPS)[number];
18
+ /** Palette color stored on an element. Hex colors remain supported for legacy docs. */
19
+ export type PaletteColor = {
20
+ name: ColorName;
21
+ opacity: OpacityStep;
22
+ };
23
+ export type StyleColor = PaletteColor | {
24
+ hex: string;
25
+ opacity: number;
26
+ };
27
+ export declare function isSpacingToken(value: string): value is SpacingToken;
28
+ export declare function isBorderWidthToken(value: string): value is BorderWidthToken;
29
+ export declare function isRadiusToken(value: string): value is RadiusToken;
30
+ export declare function isTextSizeToken(value: string): value is TextSizeToken;
31
+ export declare function isLeadingToken(value: string): value is LeadingToken;
32
+ export declare function isTrackingToken(value: string): value is TrackingToken;
33
+ export declare function isPaletteColor(value: unknown): value is PaletteColor;
34
+ export declare function isHexColor(value: unknown): value is {
35
+ hex: string;
36
+ opacity: number;
37
+ };
38
+ /** Map a CSS length (or token) onto the spacing scale when it lands exactly. */
39
+ export declare function toSpacingToken(value: unknown): SpacingToken | undefined;
40
+ export declare function toBorderWidthToken(value: unknown): BorderWidthToken | undefined;
41
+ export declare function toRadiusToken(value: unknown): RadiusToken | undefined;
42
+ export declare function toTextSizeToken(value: unknown): TextSizeToken | undefined;
43
+ export declare function toLeadingToken(value: unknown): LeadingToken | undefined;
44
+ export declare function toTrackingToken(value: unknown): TrackingToken | undefined;
45
+ export declare function toPaletteColor(value: unknown): PaletteColor | undefined;
46
+ export declare function fontWeightClass(value: unknown): string | undefined;
47
+ export declare function colorClass(prefix: 'bg' | 'text' | 'border', color: PaletteColor): string;
48
+ export declare function spacingClass(prefix: string, token: SpacingToken): string;
49
+ export declare function radiusClass(corner: string, token: RadiusToken): string;
50
+ export declare function borderWidthClass(token: BorderWidthToken): string;
51
+ export declare function textSizeClass(token: TextSizeToken): string;
52
+ export declare function leadingClass(token: LeadingToken): string;
53
+ export declare function trackingClass(token: TrackingToken): string;
54
+ /** CSS value for a text-size token, used for page theme variables. */
55
+ export declare function textSizeTokenToCss(token: TextSizeToken): string;
56
+ /** CSS value for a palette color (for page theme variables). */
57
+ export declare function paletteColorToCss(color: PaletteColor): string | undefined;
58
+ /** CSS length for a spacing token. */
59
+ export declare function spacingTokenToCss(token: SpacingToken): string;
60
+ /** CSS length for a radius token. */
61
+ export declare function radiusTokenToCss(token: RadiusToken): string;
62
+ /** CSS length for a border-width token. */
63
+ export declare function borderWidthTokenToCss(token: BorderWidthToken): string;
64
+ /** CSS value for a leading token. */
65
+ export declare function leadingTokenToCss(token: LeadingToken): string;
66
+ /** CSS value for a tracking token. */
67
+ export declare function trackingTokenToCss(token: TrackingToken): string;
@@ -4,8 +4,11 @@ export declare const tags: {
4
4
  readonly PPage: "plmt-page";
5
5
  readonly PSection: "plmt-section";
6
6
  readonly PContainer: "plmt-container";
7
+ readonly PNav: "plmt-nav";
8
+ readonly PFooter: "plmt-footer";
7
9
  readonly PButton: "plmt-button";
8
10
  readonly PText: "plmt-text";
11
+ readonly PHeading: "plmt-heading";
9
12
  readonly PRichText: "plmt-rich-text";
10
13
  readonly PImage: "plmt-image";
11
14
  readonly PVideo: "plmt-video";
@@ -18,15 +21,19 @@ export declare const tags: {
18
21
  readonly PCheckbox: "plmt-checkbox";
19
22
  readonly PRadio: "plmt-radio";
20
23
  readonly PSelect: "plmt-select";
24
+ readonly PArticle: "plmt-article";
21
25
  };
22
26
  export type ShortcodeTag = (typeof tags)[ElementType];
23
27
  /** Semantic HTML tag for each element type (Stage 3). */
24
28
  export declare const semanticTags: {
25
- readonly PPage: "main";
29
+ readonly PPage: "div";
26
30
  readonly PSection: "section";
27
31
  readonly PContainer: "div";
32
+ readonly PNav: "header";
33
+ readonly PFooter: "footer";
28
34
  readonly PButton: "button";
29
35
  readonly PText: "p";
36
+ readonly PHeading: "h2";
30
37
  readonly PRichText: "div";
31
38
  readonly PImage: "img";
32
39
  readonly PVideo: "video";
@@ -39,4 +46,5 @@ export declare const semanticTags: {
39
46
  readonly PCheckbox: "div";
40
47
  readonly PRadio: "fieldset";
41
48
  readonly PSelect: "div";
49
+ readonly PArticle: "article";
42
50
  };
@@ -1,3 +1,4 @@
1
+ import { ElementType } from '../schema/elementConfiguration';
1
2
  export type ElementAttribute = string | number | boolean | undefined;
2
3
  export type CssVariables = Record<string, string | undefined>;
3
4
  export type ElementSpec = {
@@ -11,4 +12,13 @@ export type ElementSpec = {
11
12
  export type ElementSpecOptions = {
12
13
  /** Layout host children (from Puck slots or recursion). Ignored for leaf elements. */
13
14
  children?: Array<ElementSpec | string>;
15
+ /** Page context passed from the page root (e.g. current URL for nav highlighting). */
16
+ context?: {
17
+ pageUrl?: string;
18
+ };
19
+ };
20
+ export type ShortcodeNode = {
21
+ type: ElementType;
22
+ props: Record<string, unknown>;
23
+ children?: ShortcodeNode[];
14
24
  };
@@ -1,4 +1,4 @@
1
- import { ColorValue } from '../ColorField/color-value';
1
+ import { StyleColor } from '../../../render/styleTokens';
2
2
  export type BackgroundType = 'color' | 'gradient';
3
3
  export type GradientKind = 'linear' | 'radial';
4
4
  export type GradientValue = {
@@ -7,8 +7,9 @@ export type GradientValue = {
7
7
  };
8
8
  export type BackgroundStyle = {
9
9
  backgroundType: BackgroundType;
10
- backgroundColor: ColorValue;
11
- backgroundGradient: GradientValue;
10
+ backgroundColor: StyleColor;
11
+ /** Present only when the author picks a gradient fill. */
12
+ backgroundGradient?: GradientValue;
12
13
  };
13
14
  export declare const MAX_GRADIENT_ARGS_LENGTH = 200;
14
15
  export declare function isSafeGradientArgs(value: string): boolean;
@@ -0,0 +1,3 @@
1
+ import { StyleColor } from '../../../render/styleTokens';
2
+ export declare function toColorText(value: StyleColor): string;
3
+ export declare function parseColorText(text: string): StyleColor | null;
@@ -1,3 +1,7 @@
1
+ /** Heroicons 24px file names (outline and solid share this list). Generated from src/templates/heroicons/24/outline. */
2
+ export declare const HEROICON_NAMES: readonly ["academic-cap", "adjustments-horizontal", "adjustments-vertical", "archive-box", "archive-box-arrow-down", "archive-box-x-mark", "arrow-down", "arrow-down-circle", "arrow-down-left", "arrow-down-on-square", "arrow-down-on-square-stack", "arrow-down-right", "arrow-down-tray", "arrow-left", "arrow-left-circle", "arrow-left-end-on-rectangle", "arrow-left-on-rectangle", "arrow-left-start-on-rectangle", "arrow-long-down", "arrow-long-left", "arrow-long-right", "arrow-long-up", "arrow-path", "arrow-path-rounded-square", "arrow-right", "arrow-right-circle", "arrow-right-end-on-rectangle", "arrow-right-on-rectangle", "arrow-right-start-on-rectangle", "arrow-small-down", "arrow-small-left", "arrow-small-right", "arrow-small-up", "arrow-top-right-on-square", "arrow-trending-down", "arrow-trending-up", "arrow-turn-down-left", "arrow-turn-down-right", "arrow-turn-left-down", "arrow-turn-left-up", "arrow-turn-right-down", "arrow-turn-right-up", "arrow-turn-up-left", "arrow-turn-up-right", "arrow-up", "arrow-up-circle", "arrow-up-left", "arrow-up-on-square", "arrow-up-on-square-stack", "arrow-up-right", "arrow-up-tray", "arrow-uturn-down", "arrow-uturn-left", "arrow-uturn-right", "arrow-uturn-up", "arrows-pointing-in", "arrows-pointing-out", "arrows-right-left", "arrows-up-down", "at-symbol", "backspace", "backward", "banknotes", "bars-2", "bars-3", "bars-3-bottom-left", "bars-3-bottom-right", "bars-3-center-left", "bars-4", "bars-arrow-down", "bars-arrow-up", "battery-0", "battery-100", "battery-50", "beaker", "bell", "bell-alert", "bell-slash", "bell-snooze", "bold", "bolt", "bolt-slash", "book-open", "bookmark", "bookmark-slash", "bookmark-square", "briefcase", "bug-ant", "building-library", "building-office", "building-office-2", "building-storefront", "cake", "calculator", "calendar", "calendar-date-range", "calendar-days", "camera", "chart-bar", "chart-bar-square", "chart-pie", "chat-bubble-bottom-center", "chat-bubble-bottom-center-text", "chat-bubble-left", "chat-bubble-left-ellipsis", "chat-bubble-left-right", "chat-bubble-oval-left", "chat-bubble-oval-left-ellipsis", "check", "check-badge", "check-circle", "chevron-double-down", "chevron-double-left", "chevron-double-right", "chevron-double-up", "chevron-down", "chevron-left", "chevron-right", "chevron-up", "chevron-up-down", "circle-stack", "clipboard", "clipboard-document", "clipboard-document-check", "clipboard-document-list", "clock", "cloud", "cloud-arrow-down", "cloud-arrow-up", "code-bracket", "code-bracket-square", "cog", "cog-6-tooth", "cog-8-tooth", "command-line", "computer-desktop", "cpu-chip", "credit-card", "cube", "cube-transparent", "currency-bangladeshi", "currency-dollar", "currency-euro", "currency-pound", "currency-rupee", "currency-yen", "cursor-arrow-rays", "cursor-arrow-ripple", "device-phone-mobile", "device-tablet", "divide", "document", "document-arrow-down", "document-arrow-up", "document-chart-bar", "document-check", "document-currency-bangladeshi", "document-currency-dollar", "document-currency-euro", "document-currency-pound", "document-currency-rupee", "document-currency-yen", "document-duplicate", "document-magnifying-glass", "document-minus", "document-plus", "document-text", "ellipsis-horizontal", "ellipsis-horizontal-circle", "ellipsis-vertical", "envelope", "envelope-open", "equals", "exclamation-circle", "exclamation-triangle", "eye", "eye-dropper", "eye-slash", "face-frown", "face-smile", "film", "finger-print", "fire", "flag", "folder", "folder-arrow-down", "folder-minus", "folder-open", "folder-plus", "forward", "funnel", "gif", "gift", "gift-top", "globe-alt", "globe-americas", "globe-asia-australia", "globe-europe-africa", "h1", "h2", "h3", "hand-raised", "hand-thumb-down", "hand-thumb-up", "hashtag", "heart", "home", "home-modern", "identification", "inbox", "inbox-arrow-down", "inbox-stack", "information-circle", "italic", "key", "language", "lifebuoy", "light-bulb", "link", "link-slash", "list-bullet", "lock-closed", "lock-open", "magnifying-glass", "magnifying-glass-circle", "magnifying-glass-minus", "magnifying-glass-plus", "map", "map-pin", "megaphone", "microphone", "minus", "minus-circle", "minus-small", "moon", "musical-note", "newspaper", "no-symbol", "numbered-list", "paint-brush", "paper-airplane", "paper-clip", "pause", "pause-circle", "pencil", "pencil-square", "percent-badge", "phone", "phone-arrow-down-left", "phone-arrow-up-right", "phone-x-mark", "photo", "play", "play-circle", "play-pause", "plus", "plus-circle", "plus-small", "power", "presentation-chart-bar", "presentation-chart-line", "printer", "puzzle-piece", "qr-code", "question-mark-circle", "queue-list", "radio", "receipt-percent", "receipt-refund", "rectangle-group", "rectangle-stack", "rocket-launch", "rss", "scale", "scissors", "server", "server-stack", "share", "shield-check", "shield-exclamation", "shopping-bag", "shopping-cart", "signal", "signal-slash", "slash", "sparkles", "speaker-wave", "speaker-x-mark", "square-2-stack", "square-3-stack-3d", "squares-2x2", "squares-plus", "star", "stop", "stop-circle", "strikethrough", "sun", "swatch", "table-cells", "tag", "ticket", "trash", "trophy", "truck", "tv", "underline", "user", "user-circle", "user-group", "user-minus", "user-plus", "users", "variable", "video-camera", "video-camera-slash", "view-columns", "viewfinder-circle", "wallet", "wifi", "window", "wrench", "wrench-screwdriver", "x-circle", "x-mark"];
3
+ export type HeroiconName = (typeof HEROICON_NAMES)[number];
1
4
  export declare const NO_ICON = "";
2
- export declare function isOutlineIconName(value: string): boolean;
5
+ export declare function isHeroiconName(value: string): boolean;
6
+ /** Display label for a Heroicons file name (map-pin becomes Map pin). */
3
7
  export declare function labelForIcon(value: string): string;
@@ -1,3 +1,5 @@
1
1
  import { z } from 'zod';
2
2
  /** An http(s) URL or a single-slash path on the same site. Other schemes and relative paths are rejected. */
3
3
  export declare const addressSchema: z.ZodString;
4
+ /** Like addressSchema, plus mailto: and tel: for contact and footer links. */
5
+ export declare const linkAddressSchema: z.ZodString;
@@ -1,10 +1,6 @@
1
- import { z } from 'zod';
2
1
  import { BackgroundStyle } from './Fields/BackgroundField/backgroundValue';
3
2
  import { StyleDefinition } from './styleItems';
4
- export declare const colorValue: z.ZodObject<{
5
- hex: z.ZodString;
6
- opacity: z.ZodNumber;
7
- }, z.core.$strict>;
3
+ export { colorValue } from './styleTokensSchema';
8
4
  type BackgroundDefinitionOptions = {
9
5
  /** Omit to leave every background key unset until the user picks one. */
10
6
  defaults?: BackgroundStyle;
@@ -12,4 +8,3 @@ type BackgroundDefinitionOptions = {
12
8
  typeAttribute?: string;
13
9
  };
14
10
  export declare function backgroundStyleDefinitions(prefix: string, { defaults, typeAttribute }?: BackgroundDefinitionOptions): StyleDefinition[];
15
- export {};
@@ -11,6 +11,14 @@ export type BuilderDevice = {
11
11
  landscape?: ViewportSize;
12
12
  };
13
13
  export declare const builderDevices: BuilderDevice[];
14
+ /**
15
+ * Media queries for `<picture>` sources. Must match `@custom-variant` in
16
+ * `src/styles/tailwind.css` (enforced by devices.test.ts).
17
+ */
18
+ export declare const deviceMediaQueries: {
19
+ readonly mobile: "(max-width: 767px)";
20
+ readonly tablet: "(max-width: 1279px)";
21
+ };
14
22
  export declare const builderViewports: {
15
23
  icon: "Tablet" | "Monitor" | "Smartphone";
16
24
  label: DeviceName;