blue-chestnut-solar-expert 0.0.62 → 0.0.64

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 (162) hide show
  1. package/dist/cjs/{eraser-icon_18.cjs.entry.js → eraser-icon_19.cjs.entry.js} +22 -21
  2. package/dist/cjs/eraser-icon_19.cjs.entry.js.map +1 -0
  3. package/dist/cjs/{lerc-BC1SKbTC.js → lerc-CQf05pmr.js} +9 -9
  4. package/dist/cjs/{lerc-BC1SKbTC.js.map → lerc-CQf05pmr.js.map} +1 -1
  5. package/dist/cjs/loader.cjs.js +1 -1
  6. package/dist/cjs/loading-widget.cjs.entry.js +2 -2
  7. package/dist/cjs/loading-widget.cjs.entry.js.map +1 -1
  8. package/dist/cjs/loading-widget.entry.cjs.js.map +1 -1
  9. package/dist/cjs/stencil-library.cjs.js +1 -1
  10. package/dist/collection/collection-manifest.json +2 -1
  11. package/dist/collection/components/map-draw/map-draw.js +54 -54
  12. package/dist/collection/components/map-draw/map-draw.js.map +1 -1
  13. package/dist/collection/components/map-draw/map-selector.js +3 -3
  14. package/dist/collection/components/map-draw/polygon-buttons.js +1 -1
  15. package/dist/collection/components/map-draw/polygon-information.js +18 -11
  16. package/dist/collection/components/map-draw/polygon-information.js.map +1 -1
  17. package/dist/collection/components/map-draw/tool-box.js +3 -3
  18. package/dist/collection/components/map-draw/tutorial-component.js +36 -3
  19. package/dist/collection/components/map-draw/tutorial-component.js.map +1 -1
  20. package/dist/collection/components/settings/settings.js +8 -8
  21. package/dist/collection/components/solar-expert/solar-expert.js +3 -1
  22. package/dist/collection/components/solar-expert/solar-expert.js.map +1 -1
  23. package/dist/collection/components/solar-system-form/solar-system-form.js +36 -36
  24. package/dist/collection/components/widgets/loading-widget.js +1 -1
  25. package/dist/collection/components/widgets/toast-notification.js +133 -0
  26. package/dist/collection/components/widgets/toast-notification.js.map +1 -0
  27. package/dist/collection/output.css +113 -110
  28. package/dist/collection/types/lang.js.map +1 -1
  29. package/dist/collection/utils/lang/english.js +7 -0
  30. package/dist/collection/utils/lang/english.js.map +1 -1
  31. package/dist/collection/utils/lang/german.js +7 -0
  32. package/dist/collection/utils/lang/german.js.map +1 -1
  33. package/dist/collection/utils/lang/spanish.js +7 -0
  34. package/dist/collection/utils/lang/spanish.js.map +1 -1
  35. package/dist/collection/utils/solar.js +1 -0
  36. package/dist/collection/utils/solar.js.map +1 -1
  37. package/dist/components/eraser-icon.js +1 -1
  38. package/dist/components/house-icon.js +1 -1
  39. package/dist/components/icon-selector.js +1 -1
  40. package/dist/components/loading-widget.js +2 -2
  41. package/dist/components/loading-widget.js.map +1 -1
  42. package/dist/components/map-draw.js +1 -1
  43. package/dist/components/map-selector.js +1 -1
  44. package/dist/components/marker-icon.js +1 -1
  45. package/dist/components/move-icon.js +1 -1
  46. package/dist/components/octagon-minus-icon.js +1 -1
  47. package/dist/components/p-1jcVNjsm.js +47 -0
  48. package/dist/components/p-1jcVNjsm.js.map +1 -0
  49. package/dist/components/p-4FooU4eR.js +40 -0
  50. package/dist/components/p-4FooU4eR.js.map +1 -0
  51. package/dist/components/p-6rmvkwsO.js +163 -0
  52. package/dist/components/p-6rmvkwsO.js.map +1 -0
  53. package/dist/components/p-BYULvwxQ.js +40 -0
  54. package/dist/components/p-BYULvwxQ.js.map +1 -0
  55. package/dist/components/{p-CRQ8cKpY.js → p-B_6Ue-UQ.js} +23 -2
  56. package/dist/components/p-B_6Ue-UQ.js.map +1 -0
  57. package/dist/components/p-BcBvva_X.js +40 -0
  58. package/dist/components/p-BcBvva_X.js.map +1 -0
  59. package/dist/components/p-But3uNm3.js +76 -0
  60. package/dist/components/p-But3uNm3.js.map +1 -0
  61. package/dist/components/p-COCnOrkb.js +121 -0
  62. package/dist/components/p-COCnOrkb.js.map +1 -0
  63. package/dist/components/p-COL7rExT.js +86 -0
  64. package/dist/components/p-COL7rExT.js.map +1 -0
  65. package/dist/components/p-CpGXfh7Q.js +114 -0
  66. package/dist/components/p-CpGXfh7Q.js.map +1 -0
  67. package/dist/components/p-Cu7ckMQp.js +40 -0
  68. package/dist/components/p-Cu7ckMQp.js.map +1 -0
  69. package/dist/components/p-CxwiRuTf.js +623 -0
  70. package/dist/components/p-CxwiRuTf.js.map +1 -0
  71. package/dist/components/p-DCMO4ssM.js +40 -0
  72. package/dist/components/p-DCMO4ssM.js.map +1 -0
  73. package/dist/components/p-DWrXodHT.js +40 -0
  74. package/dist/components/p-DWrXodHT.js.map +1 -0
  75. package/dist/components/{p-N0461-xw.js → p-De6Uhz0b.js} +93 -86
  76. package/dist/components/p-De6Uhz0b.js.map +1 -0
  77. package/dist/components/{p-CH_OwRlu.js → p-DoOT28vq.js} +3 -3
  78. package/dist/components/{p-CH_OwRlu.js.map → p-DoOT28vq.js.map} +1 -1
  79. package/dist/components/{p-DJcc5dax.js → p-IzVa21Wl.js} +40 -40
  80. package/dist/components/{p-DJcc5dax.js.map → p-IzVa21Wl.js.map} +1 -1
  81. package/dist/components/p-JzJ_ZuEh.js +89 -0
  82. package/dist/components/p-JzJ_ZuEh.js.map +1 -0
  83. package/dist/components/p-kB7DMoo7.js +40 -0
  84. package/dist/components/p-kB7DMoo7.js.map +1 -0
  85. package/dist/components/p-rW0sFWOp.js +40 -0
  86. package/dist/components/p-rW0sFWOp.js.map +1 -0
  87. package/dist/components/polygon-buttons.js +1 -1
  88. package/dist/components/polygon-information.js +1 -1
  89. package/dist/components/search-icon.js +1 -1
  90. package/dist/components/settings-icon.js +1 -1
  91. package/dist/components/settings-modal.js +1 -1
  92. package/dist/components/solar-expert.js +42 -34
  93. package/dist/components/solar-expert.js.map +1 -1
  94. package/dist/components/solar-system-form.js +1 -1
  95. package/dist/components/toast-notification.d.ts +11 -0
  96. package/dist/components/toast-notification.js +11 -0
  97. package/dist/components/toast-notification.js.map +1 -0
  98. package/dist/components/tool-box.js +1 -1
  99. package/dist/components/tutorial-component.js +1 -1
  100. package/dist/components/undo-icon.js +1 -1
  101. package/dist/esm/eraser-icon_19.entry.js +7 -0
  102. package/dist/esm/{eraser-icon_18.entry.js.map → eraser-icon_19.entry.js.map} +1 -1
  103. package/dist/esm/{lerc-C1dTV3Ec.js → lerc-j3yBkoBc.js} +3 -3
  104. package/dist/esm/{lerc-C1dTV3Ec.js.map → lerc-j3yBkoBc.js.map} +1 -1
  105. package/dist/esm/loader.js +1 -1
  106. package/dist/esm/loading-widget.entry.js +2 -2
  107. package/dist/esm/loading-widget.entry.js.map +1 -1
  108. package/dist/esm/stencil-library.js +1 -1
  109. package/dist/stencil-library/loading-widget.entry.esm.js.map +1 -1
  110. package/dist/stencil-library/p-741a746a.entry.js +2 -0
  111. package/dist/stencil-library/p-741a746a.entry.js.map +1 -0
  112. package/dist/stencil-library/p-c6J1w7ew.js +2 -0
  113. package/dist/stencil-library/{p-DN5z5Lnk.js.map → p-c6J1w7ew.js.map} +1 -1
  114. package/dist/stencil-library/{p-d3e17162.entry.js → p-d2fcb2d8.entry.js} +2 -2
  115. package/dist/stencil-library/{p-DYtW7_ih.js → p-rVA7BFlW.js} +4 -4
  116. package/dist/stencil-library/{p-DYtW7_ih.js.map → p-rVA7BFlW.js.map} +1 -1
  117. package/dist/stencil-library/stencil-library.esm.js +1 -1
  118. package/dist/types/components/map-draw/map-draw.d.ts +5 -4
  119. package/dist/types/components/map-draw/polygon-information.d.ts +1 -0
  120. package/dist/types/components/map-draw/tutorial-component.d.ts +9 -0
  121. package/dist/types/components/widgets/toast-notification.d.ts +14 -0
  122. package/dist/types/components.d.ts +19 -0
  123. package/dist/types/types/lang.d.ts +7 -0
  124. package/package.json +1 -1
  125. package/dist/cjs/eraser-icon_18.cjs.entry.js.map +0 -1
  126. package/dist/components/p-B7UJpRdF.js +0 -40
  127. package/dist/components/p-B7UJpRdF.js.map +0 -1
  128. package/dist/components/p-BELtn8mh.js +0 -40
  129. package/dist/components/p-BELtn8mh.js.map +0 -1
  130. package/dist/components/p-BFxdD9Vs.js +0 -40
  131. package/dist/components/p-BFxdD9Vs.js.map +0 -1
  132. package/dist/components/p-BXbeMtbx.js +0 -76
  133. package/dist/components/p-BXbeMtbx.js.map +0 -1
  134. package/dist/components/p-BYE5N70N.js +0 -163
  135. package/dist/components/p-BYE5N70N.js.map +0 -1
  136. package/dist/components/p-BnTinS5t.js +0 -40
  137. package/dist/components/p-BnTinS5t.js.map +0 -1
  138. package/dist/components/p-BsLLB46f.js +0 -114
  139. package/dist/components/p-BsLLB46f.js.map +0 -1
  140. package/dist/components/p-CO7fYxHj.js +0 -40
  141. package/dist/components/p-CO7fYxHj.js.map +0 -1
  142. package/dist/components/p-CRQ8cKpY.js.map +0 -1
  143. package/dist/components/p-CZydnQHs.js +0 -114
  144. package/dist/components/p-CZydnQHs.js.map +0 -1
  145. package/dist/components/p-CcItlhA2.js +0 -60
  146. package/dist/components/p-CcItlhA2.js.map +0 -1
  147. package/dist/components/p-Dcu7-bdb.js +0 -623
  148. package/dist/components/p-Dcu7-bdb.js.map +0 -1
  149. package/dist/components/p-DotCjbjt.js +0 -40
  150. package/dist/components/p-DotCjbjt.js.map +0 -1
  151. package/dist/components/p-Dqekrz_n.js +0 -40
  152. package/dist/components/p-Dqekrz_n.js.map +0 -1
  153. package/dist/components/p-DvYICeab.js +0 -40
  154. package/dist/components/p-DvYICeab.js.map +0 -1
  155. package/dist/components/p-Dvlk0vkV.js +0 -47
  156. package/dist/components/p-Dvlk0vkV.js.map +0 -1
  157. package/dist/components/p-N0461-xw.js.map +0 -1
  158. package/dist/esm/eraser-icon_18.entry.js +0 -7
  159. package/dist/stencil-library/p-0cc467c4.entry.js +0 -2
  160. package/dist/stencil-library/p-0cc467c4.entry.js.map +0 -1
  161. package/dist/stencil-library/p-DN5z5Lnk.js +0 -2
  162. /package/dist/stencil-library/{p-d3e17162.entry.js.map → p-d2fcb2d8.entry.js.map} +0 -0
@@ -1,22 +1,23 @@
1
1
 
2
2
  if (typeof global === "undefined") { var global = globalThis || window || self; }
3
3
  import { p as proxyCustomElement, H, h, getAssetPath } from './index.js';
4
- import { r as requireDist$1, d as defineCustomElement$4, a as DEFAULT_SOLAR_EXPERT_CONFIG, b as DEFAULT_SOLAR_PANEL_TYPE, c as distExports$1, B as BORDER_INSET } from './p-DJcc5dax.js';
5
- import { d as defineCustomElement$3, r as roofTool, m as moveTool, a as markRoofEdgeTool, o as obstructionTool } from './p-BYE5N70N.js';
6
- import { d as defineCustomElement$8, g as getPixelInMeters } from './p-CZydnQHs.js';
7
- import { s as state, o as onChange, g as getLanguageStrings } from './p-CRQ8cKpY.js';
8
- import { d as defineCustomElement$f } from './p-DvYICeab.js';
9
- import { d as defineCustomElement$e } from './p-BFxdD9Vs.js';
10
- import { d as defineCustomElement$d } from './p-BsLLB46f.js';
11
- import { d as defineCustomElement$c } from './p-CO7fYxHj.js';
12
- import { d as defineCustomElement$b } from './p-DotCjbjt.js';
13
- import { d as defineCustomElement$a } from './p-BnTinS5t.js';
14
- import { d as defineCustomElement$9 } from './p-Dvlk0vkV.js';
15
- import { d as defineCustomElement$7 } from './p-Dqekrz_n.js';
16
- import { d as defineCustomElement$6 } from './p-B7UJpRdF.js';
17
- import { d as defineCustomElement$5 } from './p-BXbeMtbx.js';
18
- import { d as defineCustomElement$2 } from './p-CcItlhA2.js';
19
- import { d as defineCustomElement$1 } from './p-BELtn8mh.js';
4
+ import { r as requireDist$1, d as defineCustomElement$5, a as DEFAULT_SOLAR_EXPERT_CONFIG, b as DEFAULT_SOLAR_PANEL_TYPE, c as distExports$1, B as BORDER_INSET } from './p-IzVa21Wl.js';
5
+ import { d as defineCustomElement$3, r as roofTool, m as moveTool, a as markRoofEdgeTool, o as obstructionTool } from './p-6rmvkwsO.js';
6
+ import { d as defineCustomElement$9, g as getPixelInMeters } from './p-COCnOrkb.js';
7
+ import { s as state, o as onChange, g as getLanguageStrings } from './p-B_6Ue-UQ.js';
8
+ import { d as defineCustomElement$g } from './p-Cu7ckMQp.js';
9
+ import { d as defineCustomElement$f } from './p-BcBvva_X.js';
10
+ import { d as defineCustomElement$e } from './p-CpGXfh7Q.js';
11
+ import { d as defineCustomElement$d } from './p-4FooU4eR.js';
12
+ import { d as defineCustomElement$c } from './p-kB7DMoo7.js';
13
+ import { d as defineCustomElement$b } from './p-rW0sFWOp.js';
14
+ import { d as defineCustomElement$a } from './p-1jcVNjsm.js';
15
+ import { d as defineCustomElement$8 } from './p-DWrXodHT.js';
16
+ import { d as defineCustomElement$7 } from './p-BYULvwxQ.js';
17
+ import { d as defineCustomElement$6 } from './p-But3uNm3.js';
18
+ import { d as defineCustomElement$4 } from './p-COL7rExT.js';
19
+ import { d as defineCustomElement$2 } from './p-JzJ_ZuEh.js';
20
+ import { d as defineCustomElement$1 } from './p-DCMO4ssM.js';
20
21
 
21
22
  const THIS_IS_NOT_AN_OBJECT = "This is not an object";
22
23
  const THIS_IS_NOT_A_FLOAT16ARRAY_OBJECT = "This is not a Float16Array object";
@@ -2514,7 +2515,7 @@ addDecoder(6, () => {
2514
2515
  addDecoder(7, () => import('./p-BGoSj_DR.js').then((m) => m.default));
2515
2516
  addDecoder([8, 32946], () => import('./p-B54Ul0nf.js').then((m) => m.default));
2516
2517
  addDecoder(32773, () => import('./p-ByX6QP-E.js').then((m) => m.default));
2517
- addDecoder(34887, () => import('./p-CH_OwRlu.js')
2518
+ addDecoder(34887, () => import('./p-DoOT28vq.js')
2518
2519
  .then(async (m) => {
2519
2520
  await m.zstd.init();
2520
2521
  return m;
@@ -14094,6 +14095,7 @@ async function downloadGeoTIFF(url, apiKey) {
14094
14095
  }
14095
14096
  // [END solar_api_download_geotiff]
14096
14097
  async function getBuildingImages(latitude, longitude, apiKey, radiusMeters = 15) {
14098
+ console.log("getBuildingImages", latitude, longitude, radiusMeters);
14097
14099
  if (latitude === 0 || longitude === 0) {
14098
14100
  return null;
14099
14101
  }
@@ -15168,7 +15170,7 @@ function requireDist () {
15168
15170
 
15169
15171
  var distExports = requireDist();
15170
15172
 
15171
- const outputCss = "/*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --font-sans: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\",\n \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace;\n --color-red-100: oklch(93.6% 0.032 17.717);\n --color-red-300: oklch(80.8% 0.114 19.571);\n --color-red-700: oklch(50.5% 0.213 27.518);\n --color-gray-400: oklch(70.7% 0.022 261.325);\n --color-gray-800: oklch(27.8% 0.033 256.848);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --container-md: 28rem;\n --container-2xl: 42rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-lg: 1.125rem;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-xl: 1.25rem;\n --text-xl--line-height: calc(1.75 / 1.25);\n --text-2xl: 1.5rem;\n --text-2xl--line-height: calc(2 / 1.5);\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --radius-lg: 0.5rem;\n --radius-4xl: 2rem;\n --animate-spin: spin 1s linear infinite;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n --color-primary: hsl(41 51% 90%);\n --color-primary-foreground: hsl(0 0% 0%);\n --color-secondary: hsl(28 100% 8%);\n --color-secondary-foreground: hsl(0 0% 100%);\n --color-tertiary: hsl(28 100% 29%);\n --color-tertiary-foreground: hsl(0 0% 100%);\n --color-muted: hsl(0 0% 100%);\n --color-muted-foreground: hsl(0 0% 0%);\n --color-error: hsl(0 100% 50%);\n --color-error-foreground: hsl(0 0% 100%);\n --color-surface: hsl(0 0% 88%);\n --color-surface-hover: hsl(0 0% 82%);\n --color-surface-active: hsl(0 0% 64%);\n --color-text-muted: hsl(0 0% 45%);\n --color-text-secondary: hsl(0 0% 55%);\n --color-text-placeholder: hsl(0 0% 73%);\n --color-border: hsl(0 0% 82%);\n --color-border-light: hsl(0 0% 93%);\n --color-success: hsl(142 76% 36%);\n --color-info: hsl(221 83% 53%);\n --color-hover: hsl(0 0% 88%);\n --color-hover-dark: hsl(28 100% 8%);\n --color-overlay: rgba(0, 0, 0, 0.24);\n --color-tooltip: hsl(0 0% 13%);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .pointer-events-none {\n pointer-events: none;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .top-1 {\n top: calc(var(--spacing) * 1);\n }\n .top-1\\/2 {\n top: calc(1/2 * 100%);\n }\n .top-full {\n top: 100%;\n }\n .bottom-full {\n bottom: 100%;\n }\n .left-0 {\n left: calc(var(--spacing) * 0);\n }\n .left-1 {\n left: calc(var(--spacing) * 1);\n }\n .left-1\\/2 {\n left: calc(1/2 * 100%);\n }\n .left-3 {\n left: calc(var(--spacing) * 3);\n }\n .z-10 {\n z-index: 10;\n }\n .z-20 {\n z-index: 20;\n }\n .z-50 {\n z-index: 50;\n }\n .container {\n width: 100%;\n @media (width >= 40rem) {\n max-width: 40rem;\n }\n @media (width >= 48rem) {\n max-width: 48rem;\n }\n @media (width >= 64rem) {\n max-width: 64rem;\n }\n @media (width >= 80rem) {\n max-width: 80rem;\n }\n @media (width >= 96rem) {\n max-width: 96rem;\n }\n }\n .m-auto {\n margin: auto;\n }\n .mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n .mt-4 {\n margin-top: calc(var(--spacing) * 4);\n }\n .mt-6 {\n margin-top: calc(var(--spacing) * 6);\n }\n .mb-1 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n .mb-4 {\n margin-bottom: calc(var(--spacing) * 4);\n }\n .mb-6 {\n margin-bottom: calc(var(--spacing) * 6);\n }\n .block {\n display: block;\n }\n .flex {\n display: flex;\n }\n .grid {\n display: grid;\n }\n .inline {\n display: inline;\n }\n .inline-block {\n display: inline-block;\n }\n .table {\n display: table;\n }\n .h-0 {\n height: calc(var(--spacing) * 0);\n }\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n .h-16 {\n height: calc(var(--spacing) * 16);\n }\n .h-48 {\n height: calc(var(--spacing) * 48);\n }\n .h-64 {\n height: calc(var(--spacing) * 64);\n }\n .h-96 {\n height: calc(var(--spacing) * 96);\n }\n .h-\\[400px\\] {\n height: 400px;\n }\n .h-full {\n height: 100%;\n }\n .max-h-96 {\n max-height: calc(var(--spacing) * 96);\n }\n .max-h-full {\n max-height: 100%;\n }\n .w-0 {\n width: calc(var(--spacing) * 0);\n }\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n .w-16 {\n width: calc(var(--spacing) * 16);\n }\n .w-20 {\n width: calc(var(--spacing) * 20);\n }\n .w-48 {\n width: calc(var(--spacing) * 48);\n }\n .w-64 {\n width: calc(var(--spacing) * 64);\n }\n .w-96 {\n width: calc(var(--spacing) * 96);\n }\n .w-auto {\n width: auto;\n }\n .w-full {\n width: 100%;\n }\n .max-w-2xl {\n max-width: var(--container-2xl);\n }\n .max-w-md {\n max-width: var(--container-md);\n }\n .flex-1 {\n flex: 1;\n }\n .flex-3 {\n flex: 3;\n }\n .border-collapse {\n border-collapse: collapse;\n }\n .-translate-y-1 {\n --tw-translate-y: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .transform {\n transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);\n }\n .animate-spin {\n animation: var(--animate-spin);\n }\n .cursor-not-allowed {\n cursor: not-allowed;\n }\n .resize {\n resize: both;\n }\n .appearance-none {\n appearance: none;\n }\n .grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-row {\n flex-direction: row;\n }\n .flex-wrap {\n flex-wrap: wrap;\n }\n .items-center {\n align-items: center;\n }\n .items-start {\n align-items: flex-start;\n }\n .items-stretch {\n align-items: stretch;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-center {\n justify-content: center;\n }\n .justify-end {\n justify-content: flex-end;\n }\n .justify-start {\n justify-content: flex-start;\n }\n .gap-0 {\n gap: calc(var(--spacing) * 0);\n }\n .gap-1 {\n gap: calc(var(--spacing) * 1);\n }\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n .gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n .space-y-3 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-4 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-6 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .rounded {\n border-radius: 0.25rem;\n }\n .rounded-4xl {\n border-radius: var(--radius-4xl);\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-lg {\n border-radius: var(--radius-lg);\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-2 {\n border-style: var(--tw-border-style);\n border-width: 2px;\n }\n .border-t-2 {\n border-top-style: var(--tw-border-style);\n border-top-width: 2px;\n }\n .border-t-4 {\n border-top-style: var(--tw-border-style);\n border-top-width: 4px;\n }\n .border-r-4 {\n border-right-style: var(--tw-border-style);\n border-right-width: 4px;\n }\n .border-b-2 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 2px;\n }\n .border-b-4 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 4px;\n }\n .border-l-4 {\n border-left-style: var(--tw-border-style);\n border-left-width: 4px;\n }\n .border-border {\n border-color: var(--color-border);\n }\n .border-current {\n border-color: currentcolor;\n }\n .border-error {\n border-color: var(--color-error);\n }\n .border-error\\/20 {\n border-color: color-mix(in srgb, hsl(0 100% 50%) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-error) 20%, transparent);\n }\n }\n .border-red-300 {\n border-color: var(--color-red-300);\n }\n .border-secondary {\n border-color: var(--color-secondary);\n }\n .border-secondary\\/20 {\n border-color: color-mix(in srgb, hsl(28 100% 8%) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-secondary) 20%, transparent);\n }\n }\n .border-success {\n border-color: var(--color-success);\n }\n .border-success\\/20 {\n border-color: color-mix(in srgb, hsl(142 76% 36%) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-success) 20%, transparent);\n }\n }\n .border-transparent {\n border-color: transparent;\n }\n .border-t-gray-800 {\n border-top-color: var(--color-gray-800);\n }\n .border-t-transparent {\n border-top-color: transparent;\n }\n .border-b-gray-800 {\n border-bottom-color: var(--color-gray-800);\n }\n .bg-black {\n background-color: var(--color-black);\n }\n .bg-error {\n background-color: var(--color-error);\n }\n .bg-error\\/10 {\n background-color: color-mix(in srgb, hsl(0 100% 50%) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-error) 10%, transparent);\n }\n }\n .bg-gray-400 {\n background-color: var(--color-gray-400);\n }\n .bg-gray-800 {\n background-color: var(--color-gray-800);\n }\n .bg-muted {\n background-color: var(--color-muted);\n }\n .bg-overlay {\n background-color: var(--color-overlay);\n }\n .bg-primary {\n background-color: var(--color-primary);\n }\n .bg-red-100 {\n background-color: var(--color-red-100);\n }\n .bg-secondary {\n background-color: var(--color-secondary);\n }\n .bg-success {\n background-color: var(--color-success);\n }\n .bg-success\\/10 {\n background-color: color-mix(in srgb, hsl(142 76% 36%) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-success) 10%, transparent);\n }\n }\n .bg-surface {\n background-color: var(--color-surface);\n }\n .bg-tertiary {\n background-color: var(--color-tertiary);\n }\n .bg-text-secondary {\n background-color: var(--color-text-secondary);\n }\n .bg-transparent {\n background-color: transparent;\n }\n .object-contain {\n object-fit: contain;\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .p-3 {\n padding: calc(var(--spacing) * 3);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .p-6 {\n padding: calc(var(--spacing) * 6);\n }\n .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n .px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .px-6 {\n padding-inline: calc(var(--spacing) * 6);\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n .py-4 {\n padding-block: calc(var(--spacing) * 4);\n }\n .pt-3 {\n padding-top: calc(var(--spacing) * 3);\n }\n .pt-4 {\n padding-top: calc(var(--spacing) * 4);\n }\n .pt-7 {\n padding-top: calc(var(--spacing) * 7);\n }\n .pr-3 {\n padding-right: calc(var(--spacing) * 3);\n }\n .pr-4 {\n padding-right: calc(var(--spacing) * 4);\n }\n .pb-2 {\n padding-bottom: calc(var(--spacing) * 2);\n }\n .pb-3 {\n padding-bottom: calc(var(--spacing) * 3);\n }\n .pb-4 {\n padding-bottom: calc(var(--spacing) * 4);\n }\n .pl-2 {\n padding-left: calc(var(--spacing) * 2);\n }\n .pl-3 {\n padding-left: calc(var(--spacing) * 3);\n }\n .pl-4 {\n padding-left: calc(var(--spacing) * 4);\n }\n .pl-10 {\n padding-left: calc(var(--spacing) * 10);\n }\n .text-center {\n text-align: center;\n }\n .text-right {\n text-align: right;\n }\n .text-2xl {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n }\n .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-xl {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .whitespace-nowrap {\n white-space: nowrap;\n }\n .text-error {\n color: var(--color-error);\n }\n .text-muted {\n color: var(--color-muted);\n }\n .text-muted-foreground {\n color: var(--color-muted-foreground);\n }\n .text-primary-foreground {\n color: var(--color-primary-foreground);\n }\n .text-red-700 {\n color: var(--color-red-700);\n }\n .text-secondary {\n color: var(--color-secondary);\n }\n .text-success {\n color: var(--color-success);\n }\n .text-text-muted {\n color: var(--color-text-muted);\n }\n .text-text-placeholder {\n color: var(--color-text-placeholder);\n }\n .text-text-secondary {\n color: var(--color-text-secondary);\n }\n .text-white {\n color: var(--color-white);\n }\n .underline {\n text-decoration-line: underline;\n }\n .accent-tertiary {\n accent-color: var(--color-tertiary);\n }\n .shadow {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .transition {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, visibility, content-visibility, overlay, pointer-events;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .duration-200 {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n .hover\\:border-secondary\\/40 {\n &:hover {\n @media (hover: hover) {\n border-color: color-mix(in srgb, hsl(28 100% 8%) 40%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-secondary) 40%, transparent);\n }\n }\n }\n }\n .hover\\:bg-hover {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-hover);\n }\n }\n }\n .hover\\:bg-muted {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-muted);\n }\n }\n }\n .hover\\:bg-overlay {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-overlay);\n }\n }\n }\n .hover\\:bg-secondary\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, hsl(28 100% 8%) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-secondary) 80%, transparent);\n }\n }\n }\n }\n .hover\\:bg-surface-hover {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-surface-hover);\n }\n }\n }\n .hover\\:bg-tertiary {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-tertiary);\n }\n }\n }\n .hover\\:bg-tertiary\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, hsl(28 100% 29%) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-tertiary) 80%, transparent);\n }\n }\n }\n }\n .hover\\:bg-text-secondary {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-text-secondary);\n }\n }\n }\n .focus\\:border-2 {\n &:focus {\n border-style: var(--tw-border-style);\n border-width: 2px;\n }\n }\n .focus\\:border-secondary {\n &:focus {\n border-color: var(--color-secondary);\n }\n }\n .focus\\:border-transparent {\n &:focus {\n border-color: transparent;\n }\n }\n .focus\\:ring-2 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-info {\n &:focus {\n --tw-ring-color: var(--color-info);\n }\n }\n .focus\\:ring-secondary {\n &:focus {\n --tw-ring-color: var(--color-secondary);\n }\n }\n .focus\\:ring-tertiary {\n &:focus {\n --tw-ring-color: var(--color-tertiary);\n }\n }\n .focus\\:ring-offset-0 {\n &:focus {\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n }\n .focus\\:outline-none {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n .sm\\:mt-0 {\n @media (width >= 40rem) {\n margin-top: calc(var(--spacing) * 0);\n }\n }\n .sm\\:flex-3 {\n @media (width >= 40rem) {\n flex: 3;\n }\n }\n .sm\\:flex-row {\n @media (width >= 40rem) {\n flex-direction: row;\n }\n }\n .sm\\:items-center {\n @media (width >= 40rem) {\n align-items: center;\n }\n }\n .sm\\:gap-4 {\n @media (width >= 40rem) {\n gap: calc(var(--spacing) * 4);\n }\n }\n .md\\:justify-between {\n @media (width >= 48rem) {\n justify-content: space-between;\n }\n }\n .lg\\:gap-4 {\n @media (width >= 64rem) {\n gap: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&\\:\\:-webkit-slider-runnable-track\\]\\:rounded-full {\n &::-webkit-slider-runnable-track {\n border-radius: calc(infinity * 1px);\n }\n }\n .\\[\\&\\:\\:-webkit-slider-runnable-track\\]\\:bg-black\\/25 {\n &::-webkit-slider-runnable-track {\n background-color: color-mix(in srgb, #000 25%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 25%, transparent);\n }\n }\n }\n .\\[\\&\\:\\:-webkit-slider-thumb\\]\\:h-\\[10px\\] {\n &::-webkit-slider-thumb {\n height: 10px;\n }\n }\n .\\[\\&\\:\\:-webkit-slider-thumb\\]\\:w-\\[10px\\] {\n &::-webkit-slider-thumb {\n width: 10px;\n }\n }\n .\\[\\&\\:\\:-webkit-slider-thumb\\]\\:appearance-none {\n &::-webkit-slider-thumb {\n appearance: none;\n }\n }\n .\\[\\&\\:\\:-webkit-slider-thumb\\]\\:rounded-full {\n &::-webkit-slider-thumb {\n border-radius: calc(infinity * 1px);\n }\n }\n .\\[\\&\\:\\:-webkit-slider-thumb\\]\\:bg-muted {\n &::-webkit-slider-thumb {\n background-color: var(--color-muted);\n }\n }\n}\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-rotate-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-z {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-space-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-duration {\n syntax: \"*\";\n inherits: false;\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-rotate-x: initial;\n --tw-rotate-y: initial;\n --tw-rotate-z: initial;\n --tw-skew-x: initial;\n --tw-skew-y: initial;\n --tw-space-y-reverse: 0;\n --tw-border-style: solid;\n --tw-font-weight: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-outline-style: solid;\n --tw-duration: initial;\n }\n }\n}\n";
15173
+ const outputCss = "/*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --font-sans: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\",\n \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace;\n --color-red-100: oklch(93.6% 0.032 17.717);\n --color-red-300: oklch(80.8% 0.114 19.571);\n --color-red-500: oklch(63.7% 0.237 25.331);\n --color-red-700: oklch(50.5% 0.213 27.518);\n --color-gray-400: oklch(70.7% 0.022 261.325);\n --color-gray-800: oklch(27.8% 0.033 256.848);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --container-md: 28rem;\n --container-2xl: 42rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-lg: 1.125rem;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-xl: 1.25rem;\n --text-xl--line-height: calc(1.75 / 1.25);\n --text-2xl: 1.5rem;\n --text-2xl--line-height: calc(2 / 1.5);\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --radius-lg: 0.5rem;\n --radius-4xl: 2rem;\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --animate-spin: spin 1s linear infinite;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n --color-primary: hsl(41 51% 90%);\n --color-primary-foreground: hsl(0 0% 0%);\n --color-secondary: hsl(28 100% 8%);\n --color-secondary-foreground: hsl(0 0% 100%);\n --color-tertiary: hsl(28 100% 29%);\n --color-tertiary-foreground: hsl(0 0% 100%);\n --color-muted: hsl(0 0% 100%);\n --color-muted-foreground: hsl(0 0% 0%);\n --color-error: hsl(0 100% 50%);\n --color-error-foreground: hsl(0 0% 100%);\n --color-surface: hsl(0 0% 88%);\n --color-surface-hover: hsl(0 0% 82%);\n --color-surface-active: hsl(0 0% 64%);\n --color-text-muted: hsl(0 0% 45%);\n --color-text-secondary: hsl(0 0% 55%);\n --color-text-placeholder: hsl(0 0% 73%);\n --color-border: hsl(0 0% 82%);\n --color-border-light: hsl(0 0% 93%);\n --color-success: hsl(142 76% 36%);\n --color-info: hsl(221 83% 53%);\n --color-hover: hsl(0 0% 88%);\n --color-hover-dark: hsl(28 100% 8%);\n --color-overlay: rgba(0, 0, 0, 0.24);\n --color-tooltip: hsl(0 0% 13%);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .pointer-events-none {\n pointer-events: none;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .bottom-4 {\n bottom: calc(var(--spacing) * 4);\n }\n .left-0 {\n left: calc(var(--spacing) * 0);\n }\n .left-1 {\n left: calc(var(--spacing) * 1);\n }\n .left-1\\/2 {\n left: calc(1/2 * 100%);\n }\n .left-3 {\n left: calc(var(--spacing) * 3);\n }\n .z-10 {\n z-index: 10;\n }\n .z-20 {\n z-index: 20;\n }\n .z-50 {\n z-index: 50;\n }\n .container {\n width: 100%;\n @media (width >= 40rem) {\n max-width: 40rem;\n }\n @media (width >= 48rem) {\n max-width: 48rem;\n }\n @media (width >= 64rem) {\n max-width: 64rem;\n }\n @media (width >= 80rem) {\n max-width: 80rem;\n }\n @media (width >= 96rem) {\n max-width: 96rem;\n }\n }\n .m-auto {\n margin: auto;\n }\n .mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n .mt-4 {\n margin-top: calc(var(--spacing) * 4);\n }\n .mt-6 {\n margin-top: calc(var(--spacing) * 6);\n }\n .mb-1 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n .mb-4 {\n margin-bottom: calc(var(--spacing) * 4);\n }\n .mb-6 {\n margin-bottom: calc(var(--spacing) * 6);\n }\n .block {\n display: block;\n }\n .flex {\n display: flex;\n }\n .grid {\n display: grid;\n }\n .inline {\n display: inline;\n }\n .inline-block {\n display: inline-block;\n }\n .table {\n display: table;\n }\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n .h-16 {\n height: calc(var(--spacing) * 16);\n }\n .h-48 {\n height: calc(var(--spacing) * 48);\n }\n .h-64 {\n height: calc(var(--spacing) * 64);\n }\n .h-\\[400px\\] {\n height: 400px;\n }\n .h-full {\n height: 100%;\n }\n .max-h-full {\n max-height: 100%;\n }\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n .w-16 {\n width: calc(var(--spacing) * 16);\n }\n .w-20 {\n width: calc(var(--spacing) * 20);\n }\n .w-64 {\n width: calc(var(--spacing) * 64);\n }\n .w-full {\n width: 100%;\n }\n .max-w-2xl {\n max-width: var(--container-2xl);\n }\n .max-w-md {\n max-width: var(--container-md);\n }\n .flex-1 {\n flex: 1;\n }\n .border-collapse {\n border-collapse: collapse;\n }\n .-translate-x-1 {\n --tw-translate-x: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-x-1\\/2 {\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-0 {\n --tw-translate-y: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-2 {\n --tw-translate-y: calc(var(--spacing) * 2);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .scale-95 {\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n .scale-100 {\n --tw-scale-x: 100%;\n --tw-scale-y: 100%;\n --tw-scale-z: 100%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n .transform {\n transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);\n }\n .animate-spin {\n animation: var(--animate-spin);\n }\n .cursor-not-allowed {\n cursor: not-allowed;\n }\n .resize {\n resize: both;\n }\n .appearance-none {\n appearance: none;\n }\n .grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-row {\n flex-direction: row;\n }\n .flex-wrap {\n flex-wrap: wrap;\n }\n .items-center {\n align-items: center;\n }\n .items-start {\n align-items: flex-start;\n }\n .items-stretch {\n align-items: stretch;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-center {\n justify-content: center;\n }\n .justify-end {\n justify-content: flex-end;\n }\n .justify-start {\n justify-content: flex-start;\n }\n .gap-0 {\n gap: calc(var(--spacing) * 0);\n }\n .gap-1 {\n gap: calc(var(--spacing) * 1);\n }\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n .gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n .space-y-3 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-4 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-6 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .rounded {\n border-radius: 0.25rem;\n }\n .rounded-4xl {\n border-radius: var(--radius-4xl);\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-lg {\n border-radius: var(--radius-lg);\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-2 {\n border-style: var(--tw-border-style);\n border-width: 2px;\n }\n .border-t-2 {\n border-top-style: var(--tw-border-style);\n border-top-width: 2px;\n }\n .border-b-2 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 2px;\n }\n .border-border {\n border-color: var(--color-border);\n }\n .border-current {\n border-color: currentcolor;\n }\n .border-error {\n border-color: var(--color-error);\n }\n .border-error\\/20 {\n border-color: color-mix(in srgb, hsl(0 100% 50%) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-error) 20%, transparent);\n }\n }\n .border-info {\n border-color: var(--color-info);\n }\n .border-info\\/20 {\n border-color: color-mix(in srgb, hsl(221 83% 53%) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-info) 20%, transparent);\n }\n }\n .border-red-300 {\n border-color: var(--color-red-300);\n }\n .border-secondary {\n border-color: var(--color-secondary);\n }\n .border-success {\n border-color: var(--color-success);\n }\n .border-success\\/20 {\n border-color: color-mix(in srgb, hsl(142 76% 36%) 20%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-success) 20%, transparent);\n }\n }\n .border-t-transparent {\n border-top-color: transparent;\n }\n .bg-black {\n background-color: var(--color-black);\n }\n .bg-error {\n background-color: var(--color-error);\n }\n .bg-error\\/10 {\n background-color: color-mix(in srgb, hsl(0 100% 50%) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-error) 10%, transparent);\n }\n }\n .bg-error\\/90 {\n background-color: color-mix(in srgb, hsl(0 100% 50%) 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-error) 90%, transparent);\n }\n }\n .bg-info {\n background-color: var(--color-info);\n }\n .bg-info\\/90 {\n background-color: color-mix(in srgb, hsl(221 83% 53%) 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-info) 90%, transparent);\n }\n }\n .bg-muted {\n background-color: var(--color-muted);\n }\n .bg-overlay {\n background-color: var(--color-overlay);\n }\n .bg-primary {\n background-color: var(--color-primary);\n }\n .bg-red-100 {\n background-color: var(--color-red-100);\n }\n .bg-secondary {\n background-color: var(--color-secondary);\n }\n .bg-success {\n background-color: var(--color-success);\n }\n .bg-success\\/10 {\n background-color: color-mix(in srgb, hsl(142 76% 36%) 10%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-success) 10%, transparent);\n }\n }\n .bg-success\\/90 {\n background-color: color-mix(in srgb, hsl(142 76% 36%) 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-success) 90%, transparent);\n }\n }\n .bg-surface {\n background-color: var(--color-surface);\n }\n .bg-tertiary {\n background-color: var(--color-tertiary);\n }\n .bg-transparent {\n background-color: transparent;\n }\n .object-contain {\n object-fit: contain;\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .p-3 {\n padding: calc(var(--spacing) * 3);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .p-6 {\n padding: calc(var(--spacing) * 6);\n }\n .px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .px-6 {\n padding-inline: calc(var(--spacing) * 6);\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n .pt-2 {\n padding-top: calc(var(--spacing) * 2);\n }\n .pt-3 {\n padding-top: calc(var(--spacing) * 3);\n }\n .pt-4 {\n padding-top: calc(var(--spacing) * 4);\n }\n .pt-7 {\n padding-top: calc(var(--spacing) * 7);\n }\n .pr-3 {\n padding-right: calc(var(--spacing) * 3);\n }\n .pr-4 {\n padding-right: calc(var(--spacing) * 4);\n }\n .pb-2 {\n padding-bottom: calc(var(--spacing) * 2);\n }\n .pb-3 {\n padding-bottom: calc(var(--spacing) * 3);\n }\n .pb-4 {\n padding-bottom: calc(var(--spacing) * 4);\n }\n .pl-2 {\n padding-left: calc(var(--spacing) * 2);\n }\n .pl-3 {\n padding-left: calc(var(--spacing) * 3);\n }\n .pl-4 {\n padding-left: calc(var(--spacing) * 4);\n }\n .pl-10 {\n padding-left: calc(var(--spacing) * 10);\n }\n .text-center {\n text-align: center;\n }\n .text-right {\n text-align: right;\n }\n .text-2xl {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n }\n .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-xl {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .text-error {\n color: var(--color-error);\n }\n .text-error-foreground {\n color: var(--color-error-foreground);\n }\n .text-muted {\n color: var(--color-muted);\n }\n .text-muted-foreground {\n color: var(--color-muted-foreground);\n }\n .text-primary-foreground {\n color: var(--color-primary-foreground);\n }\n .text-red-500 {\n color: var(--color-red-500);\n }\n .text-red-700 {\n color: var(--color-red-700);\n }\n .text-secondary {\n color: var(--color-secondary);\n }\n .text-success {\n color: var(--color-success);\n }\n .text-text-muted {\n color: var(--color-text-muted);\n }\n .text-text-secondary {\n color: var(--color-text-secondary);\n }\n .text-white {\n color: var(--color-white);\n }\n .underline {\n text-decoration-line: underline;\n }\n .accent-tertiary {\n accent-color: var(--color-tertiary);\n }\n .opacity-0 {\n opacity: 0%;\n }\n .opacity-100 {\n opacity: 100%;\n }\n .shadow {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .transition {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, visibility, content-visibility, overlay, pointer-events;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-all {\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .duration-200 {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n .duration-300 {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n .ease-in-out {\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n }\n .hover\\:bg-hover {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-hover);\n }\n }\n }\n .hover\\:bg-muted {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-muted);\n }\n }\n }\n .hover\\:bg-overlay {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-overlay);\n }\n }\n }\n .hover\\:bg-secondary\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, hsl(28 100% 8%) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-secondary) 80%, transparent);\n }\n }\n }\n }\n .hover\\:bg-surface-hover {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-surface-hover);\n }\n }\n }\n .hover\\:bg-tertiary {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-tertiary);\n }\n }\n }\n .hover\\:bg-tertiary\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in srgb, hsl(28 100% 29%) 80%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-tertiary) 80%, transparent);\n }\n }\n }\n }\n .hover\\:bg-text-secondary {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-text-secondary);\n }\n }\n }\n .focus\\:border-2 {\n &:focus {\n border-style: var(--tw-border-style);\n border-width: 2px;\n }\n }\n .focus\\:border-secondary {\n &:focus {\n border-color: var(--color-secondary);\n }\n }\n .focus\\:border-transparent {\n &:focus {\n border-color: transparent;\n }\n }\n .focus\\:ring-2 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-secondary {\n &:focus {\n --tw-ring-color: var(--color-secondary);\n }\n }\n .focus\\:ring-tertiary {\n &:focus {\n --tw-ring-color: var(--color-tertiary);\n }\n }\n .focus\\:ring-offset-0 {\n &:focus {\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n }\n .focus\\:outline-none {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n .sm\\:mt-0 {\n @media (width >= 40rem) {\n margin-top: calc(var(--spacing) * 0);\n }\n }\n .sm\\:flex-3 {\n @media (width >= 40rem) {\n flex: 3;\n }\n }\n .sm\\:flex-row {\n @media (width >= 40rem) {\n flex-direction: row;\n }\n }\n .sm\\:items-center {\n @media (width >= 40rem) {\n align-items: center;\n }\n }\n .sm\\:gap-4 {\n @media (width >= 40rem) {\n gap: calc(var(--spacing) * 4);\n }\n }\n .md\\:grid-cols-2 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .md\\:pl-2 {\n @media (width >= 48rem) {\n padding-left: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&\\:\\:-webkit-slider-runnable-track\\]\\:rounded-full {\n &::-webkit-slider-runnable-track {\n border-radius: calc(infinity * 1px);\n }\n }\n .\\[\\&\\:\\:-webkit-slider-runnable-track\\]\\:bg-black\\/25 {\n &::-webkit-slider-runnable-track {\n background-color: color-mix(in srgb, #000 25%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 25%, transparent);\n }\n }\n }\n .\\[\\&\\:\\:-webkit-slider-thumb\\]\\:h-\\[10px\\] {\n &::-webkit-slider-thumb {\n height: 10px;\n }\n }\n .\\[\\&\\:\\:-webkit-slider-thumb\\]\\:w-\\[10px\\] {\n &::-webkit-slider-thumb {\n width: 10px;\n }\n }\n .\\[\\&\\:\\:-webkit-slider-thumb\\]\\:appearance-none {\n &::-webkit-slider-thumb {\n appearance: none;\n }\n }\n .\\[\\&\\:\\:-webkit-slider-thumb\\]\\:rounded-full {\n &::-webkit-slider-thumb {\n border-radius: calc(infinity * 1px);\n }\n }\n .\\[\\&\\:\\:-webkit-slider-thumb\\]\\:bg-muted {\n &::-webkit-slider-thumb {\n background-color: var(--color-muted);\n }\n }\n}\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-scale-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-rotate-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-rotate-z {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-x {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-skew-y {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-space-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-duration {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ease {\n syntax: \"*\";\n inherits: false;\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-scale-z: 1;\n --tw-rotate-x: initial;\n --tw-rotate-y: initial;\n --tw-rotate-z: initial;\n --tw-skew-x: initial;\n --tw-skew-y: initial;\n --tw-space-y-reverse: 0;\n --tw-border-style: solid;\n --tw-font-weight: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-outline-style: solid;\n --tw-duration: initial;\n --tw-ease: initial;\n }\n }\n}\n";
15172
15174
 
15173
15175
  const MapDraw = /*@__PURE__*/ proxyCustomElement(class MapDraw extends H {
15174
15176
  constructor() {
@@ -15188,8 +15190,6 @@ const MapDraw = /*@__PURE__*/ proxyCustomElement(class MapDraw extends H {
15188
15190
  firstPolygonClosed = false;
15189
15191
  zoom = 1;
15190
15192
  loadingState = "empty";
15191
- buildingInsightsLoaded = false;
15192
- buildingImagesLoaded = false;
15193
15193
  rgbTiff = null;
15194
15194
  currentTool = roofTool;
15195
15195
  buildingInsights = null;
@@ -15201,6 +15201,9 @@ const MapDraw = /*@__PURE__*/ proxyCustomElement(class MapDraw extends H {
15201
15201
  };
15202
15202
  currentPolygon = null;
15203
15203
  solarSystem = {};
15204
+ showToast = false;
15205
+ toastMessage = "";
15206
+ toastType = "success";
15204
15207
  get el() { return this; }
15205
15208
  canvasElement;
15206
15209
  polygonCanvas;
@@ -15217,8 +15220,6 @@ const MapDraw = /*@__PURE__*/ proxyCustomElement(class MapDraw extends H {
15217
15220
  this.latitudeChangeListener = () => {
15218
15221
  if (state.latitude && state.longitude) {
15219
15222
  this.loadingState = "loading";
15220
- this.buildingInsightsLoaded = false;
15221
- this.buildingImagesLoaded = false;
15222
15223
  this.getBuildingImages();
15223
15224
  this.getBuildingInsights();
15224
15225
  // Reset tutorial states for new location
@@ -15234,8 +15235,6 @@ const MapDraw = /*@__PURE__*/ proxyCustomElement(class MapDraw extends H {
15234
15235
  this.longitudeChangeListener = () => {
15235
15236
  if (state.latitude && state.longitude) {
15236
15237
  this.loadingState = "loading";
15237
- this.buildingInsightsLoaded = false;
15238
- this.buildingImagesLoaded = false;
15239
15238
  this.getBuildingImages();
15240
15239
  this.getBuildingInsights();
15241
15240
  // Reset tutorial states for new location
@@ -15253,8 +15252,6 @@ const MapDraw = /*@__PURE__*/ proxyCustomElement(class MapDraw extends H {
15253
15252
  // Load data if coordinates already exist
15254
15253
  if (state.latitude && state.longitude) {
15255
15254
  this.loadingState = "loading";
15256
- this.buildingInsightsLoaded = false;
15257
- this.buildingImagesLoaded = false;
15258
15255
  this.getBuildingInsights();
15259
15256
  this.getBuildingImages();
15260
15257
  // Show tutorial if coordinates already exist
@@ -15321,7 +15318,7 @@ const MapDraw = /*@__PURE__*/ proxyCustomElement(class MapDraw extends H {
15321
15318
  },
15322
15319
  onPolygonChange: (polygon) => this.handlePolygonsChange(polygon),
15323
15320
  onLowerRoofEdgeMarked: () => {
15324
- this.calculateSolarPanels();
15321
+ this.calculateSolarPanels(false);
15325
15322
  if (!this.additionalToolsTutorialShown) {
15326
15323
  this.showAdditionalToolsTutorial = true;
15327
15324
  this.additionalToolsTutorialShown = true;
@@ -15426,7 +15423,7 @@ const MapDraw = /*@__PURE__*/ proxyCustomElement(class MapDraw extends H {
15426
15423
  this.handleToolSelect(moveTool);
15427
15424
  if (polygon.azimuth && polygon.pitch) {
15428
15425
  if (this.canvasManager?.getPositionedSolarPanels(polygon.id)) {
15429
- this.calculateSolarPanels();
15426
+ this.calculateSolarPanels(false);
15430
15427
  }
15431
15428
  return;
15432
15429
  }
@@ -15449,7 +15446,7 @@ const MapDraw = /*@__PURE__*/ proxyCustomElement(class MapDraw extends H {
15449
15446
  }
15450
15447
  if (polygon.closed &&
15451
15448
  this.canvasManager?.getPositionedSolarPanels(polygon.id)) {
15452
- this.calculateSolarPanels();
15449
+ this.calculateSolarPanels(false);
15453
15450
  }
15454
15451
  }
15455
15452
  handleMouseUp = (event) => {
@@ -15547,16 +15544,12 @@ const MapDraw = /*@__PURE__*/ proxyCustomElement(class MapDraw extends H {
15547
15544
  }
15548
15545
  async getBuildingInsights() {
15549
15546
  if (!state.latitude || !state.longitude) {
15550
- this.buildingInsightsLoaded = true;
15551
- this.checkLoadingComplete();
15552
15547
  return;
15553
15548
  }
15554
15549
  if (this.buildingInsights) {
15555
15550
  const sameLocation = this.buildingInsights.center.latitude === state.latitude &&
15556
15551
  this.buildingInsights.center.longitude === state.longitude;
15557
15552
  if (sameLocation) {
15558
- this.buildingInsightsLoaded = true;
15559
- this.checkLoadingComplete();
15560
15553
  return;
15561
15554
  }
15562
15555
  this.solarSystem = {};
@@ -15580,20 +15573,9 @@ const MapDraw = /*@__PURE__*/ proxyCustomElement(class MapDraw extends H {
15580
15573
  catch (error) {
15581
15574
  console.error("Failed to get building insights:", error);
15582
15575
  }
15583
- finally {
15584
- this.buildingInsightsLoaded = true;
15585
- this.checkLoadingComplete();
15586
- }
15587
- }
15588
- checkLoadingComplete() {
15589
- if (this.buildingInsightsLoaded && this.buildingImagesLoaded) {
15590
- this.loadingState = "loaded";
15591
- }
15592
15576
  }
15593
15577
  async getBuildingImages() {
15594
15578
  if (!state.latitude || !state.longitude) {
15595
- this.buildingImagesLoaded = true;
15596
- this.checkLoadingComplete();
15597
15579
  return;
15598
15580
  }
15599
15581
  // Check if we already have building insights for the same location
@@ -15601,9 +15583,6 @@ const MapDraw = /*@__PURE__*/ proxyCustomElement(class MapDraw extends H {
15601
15583
  const sameLocation = this.buildingInsights.center.latitude === state.latitude &&
15602
15584
  this.buildingInsights.center.longitude === state.longitude;
15603
15585
  if (sameLocation) {
15604
- // If we have the same location, we might already have the images too
15605
- this.buildingImagesLoaded = true;
15606
- this.checkLoadingComplete();
15607
15586
  return;
15608
15587
  }
15609
15588
  }
@@ -15614,14 +15593,15 @@ const MapDraw = /*@__PURE__*/ proxyCustomElement(class MapDraw extends H {
15614
15593
  if (this.canvasManager) {
15615
15594
  this.canvasManager.setMeterToPixelRatio(this.pixelInMeters);
15616
15595
  }
15596
+ // this.loadingState = "loaded";
15597
+ }
15598
+ else {
15599
+ this.loadingState = "error";
15617
15600
  }
15618
15601
  }
15619
15602
  catch (error) {
15620
15603
  console.error("Failed to get building images:", error);
15621
- }
15622
- finally {
15623
- this.buildingImagesLoaded = true;
15624
- this.checkLoadingComplete();
15604
+ this.loadingState = "error";
15625
15605
  }
15626
15606
  }
15627
15607
  async drawMap() {
@@ -15640,12 +15620,7 @@ const MapDraw = /*@__PURE__*/ proxyCustomElement(class MapDraw extends H {
15640
15620
  await new Promise((resolve) => setTimeout(resolve, 0));
15641
15621
  try {
15642
15622
  distExports.renderRGB(this.rgbTiff, undefined, this.canvasElement);
15643
- }
15644
- catch (error) {
15645
- console.error("Failed to render RGB image:", error);
15646
- }
15647
- try {
15648
- distExports.renderRGB(this.rgbTiff, undefined, this.canvasElement);
15623
+ this.loadingState = "loaded";
15649
15624
  }
15650
15625
  catch (error) {
15651
15626
  console.error("Failed to render RGB image:", error);
@@ -15674,14 +15649,22 @@ const MapDraw = /*@__PURE__*/ proxyCustomElement(class MapDraw extends H {
15674
15649
  this.currentTool = moveTool;
15675
15650
  break;
15676
15651
  }
15652
+ // Show toast message
15653
+ const t = getLanguageStrings(state.settings.language);
15654
+ this.showToastMessage(t.mapDraw.toast.undoSuccess, "success");
15677
15655
  // if (!this.currentPolygon?.closed) {
15678
15656
  // this.handleToolSelect(roofTool);
15679
15657
  // }
15680
15658
  }
15681
15659
  }
15682
- calculateSolarPanels() {
15660
+ calculateSolarPanels(showToast = false) {
15683
15661
  if (this.currentPolygon) {
15684
15662
  this.calculateSolarPanelsForPolygon(this.currentPolygon, false);
15663
+ // Show toast message only when explicitly requested
15664
+ if (showToast) {
15665
+ const t = getLanguageStrings(state.settings.language);
15666
+ this.showToastMessage(t.mapDraw.toast.calculateSolarPanelsSuccess, "success");
15667
+ }
15685
15668
  }
15686
15669
  }
15687
15670
  markAsFlatRoof() {
@@ -15694,6 +15677,11 @@ const MapDraw = /*@__PURE__*/ proxyCustomElement(class MapDraw extends H {
15694
15677
  this.canvasManager?.updatePolygon(newPolygon);
15695
15678
  this.currentPolygon = newPolygon;
15696
15679
  this.calculateSolarPanelsForPolygon(newPolygon, true);
15680
+ // Show toast message
15681
+ const t = getLanguageStrings(state.settings.language);
15682
+ this.showToastMessage(t.mapDraw.toast.markAsFlatRoofSuccess, "info");
15683
+ // Auto-select the mark roof edge tool
15684
+ this.handleToolSelect(markRoofEdgeTool);
15697
15685
  }
15698
15686
  }
15699
15687
  calculateSolarPanelsForPolygon(polygon, isFlatRoof) {
@@ -15734,13 +15722,14 @@ const MapDraw = /*@__PURE__*/ proxyCustomElement(class MapDraw extends H {
15734
15722
  }
15735
15723
  if (this.currentPolygon?.type === "roof" &&
15736
15724
  this.canvasManager?.getPositionedSolarPanels(this.currentPolygon.id)) {
15737
- this.calculateSolarPanels();
15725
+ this.calculateSolarPanels(false);
15738
15726
  return;
15739
15727
  }
15740
15728
  }
15741
15729
  handleAzimuthChange(event) {
15742
15730
  const target = event.target;
15743
- const azimuth = parseFloat(target.value);
15731
+ const displayAzimuth = parseFloat(target.value);
15732
+ const azimuth = (displayAzimuth + 270) % 360;
15744
15733
  if (this.currentPolygon) {
15745
15734
  const newPolygon = {
15746
15735
  ...this.currentPolygon,
@@ -15751,7 +15740,7 @@ const MapDraw = /*@__PURE__*/ proxyCustomElement(class MapDraw extends H {
15751
15740
  }
15752
15741
  if (this.currentPolygon?.type === "roof" &&
15753
15742
  this.canvasManager?.getPositionedSolarPanels(this.currentPolygon.id)) {
15754
- this.calculateSolarPanels();
15743
+ this.calculateSolarPanels(false);
15755
15744
  return;
15756
15745
  }
15757
15746
  }
@@ -15792,29 +15781,41 @@ const MapDraw = /*@__PURE__*/ proxyCustomElement(class MapDraw extends H {
15792
15781
  };
15793
15782
  handleMarkEdgeTutorialClose = () => {
15794
15783
  this.showMarkEdgeTutorial = false;
15784
+ this.handleToolSelect(markRoofEdgeTool);
15795
15785
  };
15796
15786
  handleAdditionalToolsTutorialClose = () => {
15797
15787
  this.showAdditionalToolsTutorial = false;
15798
15788
  };
15789
+ showToastMessage(message, type = "success") {
15790
+ this.toastMessage = message;
15791
+ this.toastType = type;
15792
+ this.showToast = true;
15793
+ // Hide toast after 3 seconds
15794
+ setTimeout(() => {
15795
+ this.showToast = false;
15796
+ }, 3000);
15797
+ }
15799
15798
  render() {
15799
+ console.log(this.loadingState);
15800
15800
  const t = getLanguageStrings(state.settings.language);
15801
- return (h("div", { key: 'deed6c1f74dbf3902ec65c09a05cae5c32fe437f', class: "flex flex-col justify-center items-center w-full h-full gap-4", id: "map-draw" }, this.showTutorial && (h("tutorial-component", { key: 'a76125a68dd04b17429ec16d98357ff20333c313', onClose: this.handleTutorialClose, title: t.mapDraw.tutorial.title, description: t.mapDraw.tutorial.description, videoSource: getAssetPath("./assets/tutorial1.mp4") })), this.showMarkEdgeTutorial && (h("tutorial-component", { key: '366f794b4d41f8d4102a9b27da8cda1f74faa713', onClose: this.handleMarkEdgeTutorialClose, title: t.mapDraw.tutorial.markEdge.title, description: t.mapDraw.tutorial.markEdge
15802
- .description, videoSource: getAssetPath("./assets/tutorial2.mp4") })), this.showAdditionalToolsTutorial && (h("tutorial-component", { key: 'c995cfefb6cedef0adb2702db1074fb158d917f4', onClose: this
15801
+ return (h("div", { key: 'd9a05eaaeab8dc47f8a5eb753e778bcaa1e5bc2e', class: "flex flex-col justify-center items-center w-full h-full gap-4", id: "map-draw" }, this.showTutorial && (h("tutorial-component", { key: 'a3ef87f44343c603939ef5344fec0186033516bc', onClose: this.handleTutorialClose, title: t.mapDraw.tutorial.title, description: t.mapDraw.tutorial.description, videoSource: getAssetPath("./assets/tutorial1.mp4") })), this.showMarkEdgeTutorial && (h("tutorial-component", { key: 'ca5fb10099c9b4543cfbc6602810a8861cc21fa5', onClose: this.handleMarkEdgeTutorialClose, title: t.mapDraw.tutorial.markEdge.title, description: t.mapDraw.tutorial.markEdge
15802
+ .description, videoSource: getAssetPath("./assets/tutorial2.mp4") })), this.showAdditionalToolsTutorial && (h("tutorial-component", { key: '2e38dcf38139dfcaf841627347bc5543de848946', onClose: this
15803
15803
  .handleAdditionalToolsTutorialClose, title: t.mapDraw.tutorial.additionalTools.title, description: t.mapDraw.tutorial.additionalTools
15804
15804
  .description, videoSource: getAssetPath("./assets/tutorial3.mp4") })), (state.latitude && state.longitude &&
15805
- this.loadingState === "loading") && (h("div", { key: 'c506d8dd8c598c0ab2e6e358d252d49d527c2eb3', class: "flex items-center justify-center w-full bg-opacity-75 z-20 pt-7 rounded-4xl" }, h("div", { key: 'cfeb62d4b47fe6eebe7c933532b0ee848a490221', class: "animate-spin rounded-full h-16 w-16 border-t-2 border-b-2 border-secondary" }))), h("div", { key: 'e501cff31404ec0a6689dd33a8516cfbb44ea7b3', class: "flex items-start justify-center h-full w-full bg-primary rounded-4xl" }, h("div", { key: '0e34861a06dd7bc66eb098fdacfcc9f3f9e52de2', class: "relative h-full flex items-center justify-center w-full rounded-4xl bg-secondary", style: {
15805
+ this.loadingState === "loading") && (h("div", { key: 'b0b5a1f60190494e4b0c8ca8537683869763e41f', class: "flex items-center justify-center w-full bg-opacity-75 z-20 pt-7 rounded-4xl" }, h("div", { key: 'dd7ba3950d8ff8ba1fb9623bc390a048c273a490', class: "animate-spin rounded-full h-16 w-16 border-t-2 border-b-2 border-secondary" }))), (state.latitude && state.longitude &&
15806
+ this.loadingState === "error") && (h("div", { key: '1cb84bb0c87d36d8174388a4786613ce270b4f67', class: "flex items-center justify-center w-full bg-opacity-75 z-20 pt-7 rounded-4xl" }, h("div", { key: 'd80b3194807377813dab5d5a12e7de0f6b287e2f', class: "text-red-500 text-center text-lg font-semibold" }, t.mapDraw.imageLoadError))), h("div", { key: '2452897337412c77409f842c599ae70526c8e1bd', class: "flex items-start justify-center w-full bg-primary rounded-4xl" }, h("div", { key: '2eafe76ce4b3f4a215c0bfb0d138797d432c8c48', class: "relative flex items-center justify-center w-full rounded-4xl bg-secondary", style: {
15806
15807
  aspectRatio: this.rgbTiff
15807
15808
  ? `${this.rgbTiff.width}/${this.rgbTiff.height}`
15808
- : "1/1",
15809
- } }, h("canvas", { key: '25c2a1e181f62ac8114b5e0dbb75176cf6f1eac7', ref: (el) => this.canvasElement = el, class: "absolute top-0 left-0 w-full h-full rounded-4xl", id: "map-draw-canvas", style: {
15809
+ : "",
15810
+ } }, h("canvas", { key: '60e4aade9147dc13cca63f726a51cbe97f4935ed', ref: (el) => this.canvasElement = el, class: "absolute top-0 left-0 w-full h-full rounded-4xl", id: "map-draw-canvas", style: {
15810
15811
  cursor: this.currentTool.cursor,
15811
- } }), h("canvas", { key: 'aed95e405efa0feb1ca742416ded22d2b59edbf4', ref: (el) => this.polygonCanvas = el, class: "absolute top-0 left-0 w-full h-full rounded-4xl", style: {
15812
+ } }), h("canvas", { key: '8befa9adabe400ee1b36fc586bb1df36c9e5dbe0', ref: (el) => this.polygonCanvas = el, class: "absolute top-0 left-0 w-full h-full rounded-4xl", style: {
15812
15813
  cursor: this.currentTool.cursor,
15813
- } }))), h("div", { key: 'd60deae8244d9eb37d5c52f690acd5f77ba1f08b', class: "w-full" }, h("tool-box", { key: 'eb88b074bd5dbb8fe1879942001c08bb5c9bb400', currentTool: this.currentTool, onToolSelect: (tool) => this.handleToolSelect(tool), undoCallback: () => this.undo() })), h("div", { key: '4b401da3fd5592f555de4d0371a81f0b1e03e61f', class: "w-full" }, h("polygon-information", { key: '5e9351c5cb88cee4bdc7ae5729741df4a95cf1bf', currentPolygon: this.currentPolygon, numberOfPanels: this.currentPolygon
15814
+ } }))), this.rgbTiff && (h("div", { key: '055d405de5e09790d338e6453c9cd7198b10058a', class: "w-full" }, h("div", { key: 'c81baf5675e4296a56d486686577cb374d77894d', class: "w-full pb-4" }, h("tool-box", { key: '659ade1aeb4caea1217e6a04b7dcf32f4a70a4a3', currentTool: this.currentTool, onToolSelect: (tool) => this.handleToolSelect(tool), undoCallback: () => this.undo() })), h("div", { key: '5f991ffadf72406ebb9f43250cfa93c1a355626d', class: "w-full" }, h("polygon-information", { key: 'ddcf8aed64fc1859b6d557bbeda6808c031f1ee3', currentPolygon: this.currentPolygon, numberOfPanels: this.currentPolygon
15814
15815
  ? this
15815
15816
  .solarSystem[this.currentPolygon.id]
15816
15817
  ?.numberOfPanels
15817
- : undefined, handleAzimuthChange: (event) => this.handleAzimuthChange(event), handlePitchChange: (event) => this.handlePitchChange(event), calculateSolarPanels: () => this.calculateSolarPanels(), markAsFlatRoof: () => this.markAsFlatRoof(), currentTool: this.currentTool.name })), h("div", { key: '94745e50a078e9b89e10ad70e75d2e63f12314f4', class: "w-full" }, h("solar-system-form", { key: '3f039715b008f5861f404ba547217dc43cf82805', systemConfigs: this.solarSystem, polygons: this.canvasManager?.getPolygons(), roofCanvas: this.canvasElement, polygonCanvas: this.polygonCanvas })), this.showSettings && (h("settings-modal", { key: '93aacedcce3f43792c570579ff7b58d49ab9c822', settings: state.settings, onClose: this.handleSettingsClose, onSave: this.handleSettingsSave }))));
15818
+ : undefined, handleAzimuthChange: (event) => this.handleAzimuthChange(event), handlePitchChange: (event) => this.handlePitchChange(event), calculateSolarPanels: () => this.calculateSolarPanels(true), markAsFlatRoof: () => this.markAsFlatRoof(), currentTool: this.currentTool.name })), h("div", { key: '3f2e17665909001fdc2b15bc66fcf6d866f04da2', class: "w-full" }, h("solar-system-form", { key: '329beb621c93331bc345c4b7787f283a798ddf74', systemConfigs: this.solarSystem, polygons: this.canvasManager?.getPolygons(), roofCanvas: this.canvasElement, polygonCanvas: this.polygonCanvas })))), this.showSettings && (h("settings-modal", { key: 'c39deffc663210f2d1d4b03855e173c281b12d52', settings: state.settings, onClose: this.handleSettingsClose, onSave: this.handleSettingsSave })), this.showToast && (h("toast-notification", { key: '85748d0c1422ce7bf76cfc8eed72f10bc8be5485', message: this.toastMessage, type: this.toastType, duration: 3000 }))));
15818
15819
  }
15819
15820
  static get watchers() { return {
15820
15821
  "rgbTiff": ["setupCanvasManager", "drawMap"],
@@ -15835,15 +15836,16 @@ const MapDraw = /*@__PURE__*/ proxyCustomElement(class MapDraw extends H {
15835
15836
  "firstPolygonClosed": [32],
15836
15837
  "zoom": [32],
15837
15838
  "loadingState": [32],
15838
- "buildingInsightsLoaded": [32],
15839
- "buildingImagesLoaded": [32],
15840
15839
  "rgbTiff": [32],
15841
15840
  "currentTool": [32],
15842
15841
  "buildingInsights": [32],
15843
15842
  "pixelInMeters": [32],
15844
15843
  "interaction": [32],
15845
15844
  "currentPolygon": [32],
15846
- "solarSystem": [32]
15845
+ "solarSystem": [32],
15846
+ "showToast": [32],
15847
+ "toastMessage": [32],
15848
+ "toastType": [32]
15847
15849
  }, undefined, {
15848
15850
  "rgbTiff": ["setupCanvasManager", "drawMap"],
15849
15851
  "canvasElement": ["drawMap"]
@@ -15852,7 +15854,7 @@ function defineCustomElement() {
15852
15854
  if (typeof customElements === "undefined") {
15853
15855
  return;
15854
15856
  }
15855
- const components = ["map-draw", "eraser-icon", "house-icon", "icon-selector", "marker-icon", "move-icon", "octagon-minus-icon", "polygon-buttons", "polygon-information", "search-icon", "settings-icon", "settings-modal", "solar-system-form", "tool-box", "tutorial-component", "undo-icon"];
15857
+ const components = ["map-draw", "eraser-icon", "house-icon", "icon-selector", "marker-icon", "move-icon", "octagon-minus-icon", "polygon-buttons", "polygon-information", "search-icon", "settings-icon", "settings-modal", "solar-system-form", "toast-notification", "tool-box", "tutorial-component", "undo-icon"];
15856
15858
  components.forEach(tagName => { switch (tagName) {
15857
15859
  case "map-draw":
15858
15860
  if (!customElements.get(tagName)) {
@@ -15861,60 +15863,65 @@ function defineCustomElement() {
15861
15863
  break;
15862
15864
  case "eraser-icon":
15863
15865
  if (!customElements.get(tagName)) {
15864
- defineCustomElement$f();
15866
+ defineCustomElement$g();
15865
15867
  }
15866
15868
  break;
15867
15869
  case "house-icon":
15868
15870
  if (!customElements.get(tagName)) {
15869
- defineCustomElement$e();
15871
+ defineCustomElement$f();
15870
15872
  }
15871
15873
  break;
15872
15874
  case "icon-selector":
15873
15875
  if (!customElements.get(tagName)) {
15874
- defineCustomElement$d();
15876
+ defineCustomElement$e();
15875
15877
  }
15876
15878
  break;
15877
15879
  case "marker-icon":
15878
15880
  if (!customElements.get(tagName)) {
15879
- defineCustomElement$c();
15881
+ defineCustomElement$d();
15880
15882
  }
15881
15883
  break;
15882
15884
  case "move-icon":
15883
15885
  if (!customElements.get(tagName)) {
15884
- defineCustomElement$b();
15886
+ defineCustomElement$c();
15885
15887
  }
15886
15888
  break;
15887
15889
  case "octagon-minus-icon":
15888
15890
  if (!customElements.get(tagName)) {
15889
- defineCustomElement$a();
15891
+ defineCustomElement$b();
15890
15892
  }
15891
15893
  break;
15892
15894
  case "polygon-buttons":
15893
15895
  if (!customElements.get(tagName)) {
15894
- defineCustomElement$9();
15896
+ defineCustomElement$a();
15895
15897
  }
15896
15898
  break;
15897
15899
  case "polygon-information":
15898
15900
  if (!customElements.get(tagName)) {
15899
- defineCustomElement$8();
15901
+ defineCustomElement$9();
15900
15902
  }
15901
15903
  break;
15902
15904
  case "search-icon":
15903
15905
  if (!customElements.get(tagName)) {
15904
- defineCustomElement$7();
15906
+ defineCustomElement$8();
15905
15907
  }
15906
15908
  break;
15907
15909
  case "settings-icon":
15908
15910
  if (!customElements.get(tagName)) {
15909
- defineCustomElement$6();
15911
+ defineCustomElement$7();
15910
15912
  }
15911
15913
  break;
15912
15914
  case "settings-modal":
15913
15915
  if (!customElements.get(tagName)) {
15914
- defineCustomElement$5();
15916
+ defineCustomElement$6();
15915
15917
  }
15916
15918
  break;
15917
15919
  case "solar-system-form":
15920
+ if (!customElements.get(tagName)) {
15921
+ defineCustomElement$5();
15922
+ }
15923
+ break;
15924
+ case "toast-notification":
15918
15925
  if (!customElements.get(tagName)) {
15919
15926
  defineCustomElement$4();
15920
15927
  }
@@ -15939,6 +15946,6 @@ function defineCustomElement() {
15939
15946
  defineCustomElement();
15940
15947
 
15941
15948
  export { LercParameters as L, MapDraw as M, LercAddCompression as a, defineCustomElement as d, global$1 as g };
15942
- //# sourceMappingURL=p-N0461-xw.js.map
15949
+ //# sourceMappingURL=p-De6Uhz0b.js.map
15943
15950
 
15944
- //# sourceMappingURL=p-N0461-xw.js.map
15951
+ //# sourceMappingURL=p-De6Uhz0b.js.map