@8btc/finance-assistant-mcp 0.0.4 → 0.0.5

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 (2) hide show
  1. package/dist/index.cjs +53 -3
  2. package/package.json +1 -1
package/dist/index.cjs CHANGED
@@ -21,6 +21,7 @@ const tailwindMerge = require("tailwind-merge");
21
21
  const qrcode_react = require("qrcode.react");
22
22
  const echarts = require("echarts");
23
23
  const path = require("node:path");
24
+ const winston = require("winston");
24
25
  function _interopNamespaceDefault(e) {
25
26
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
26
27
  if (e) {
@@ -762,7 +763,7 @@ function Chapter4({ data, rsiSvg, kdjSvg }) {
762
763
  ] });
763
764
  }
764
765
  function Warn({ content }) {
765
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-[#DC2626] border bg-[#FEF2F2]", children: [
766
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-[#DC2626] border bg-[#FEF2F2] break-inside-avoid", children: [
766
767
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-[#DC2626] text-white px-[14px] py-1 font-bold", children: "风险提示" }),
767
768
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "", children: [
768
769
  content,
@@ -914,7 +915,7 @@ function Chapter6({
914
915
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "indentP", children: data.volume_indicator.retail_sentiment })
915
916
  ] });
916
917
  }
917
- function Chapter7({ data }) {
918
+ function Chapter7({ data, klineSupportSvg }) {
918
919
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "chapterPage", children: [
919
920
  /* @__PURE__ */ jsxRuntime.jsx(SectionHeader, { index: 7, title: "形态分析与关键价位" }),
920
921
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "indentP", children: data.pattern_analysis.pattern_analysis_summary }),
@@ -944,6 +945,26 @@ function Chapter7({ data }) {
944
945
  "¥220"
945
946
  ] })
946
947
  ] }),
948
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
949
+ /* @__PURE__ */ jsxRuntime.jsx(
950
+ "div",
951
+ {
952
+ className: "w-[651px] h-[284px]",
953
+ dangerouslySetInnerHTML: {
954
+ __html: klineSupportSvg
955
+ }
956
+ }
957
+ ),
958
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center text-[13px] opacity-50", children: [
959
+ "图6-2 ",
960
+ data.name,
961
+ "(",
962
+ data.code,
963
+ ".",
964
+ data.market,
965
+ ") 支撑位"
966
+ ] })
967
+ ] }),
947
968
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "indentP", children: "策略参考:" }),
948
969
  /* @__PURE__ */ jsxRuntime.jsxs("ul", { className: "pl-6 list-disc", children: [
949
970
  /* @__PURE__ */ jsxRuntime.jsx("li", { children: "靠近支撑带 + 量能配合:可分批配置" }),
@@ -1012,7 +1033,7 @@ function End({ data }) {
1012
1033
  }
1013
1034
  );
1014
1035
  }
1015
- const style = '/*! tailwindcss v4.1.17 | 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-cyan-600: oklch(60.9% 0.126 221.723);\n --color-cyan-700: oklch(52% 0.105 223.128);\n --color-gray-700: oklch(37.3% 0.034 259.733);\n --color-gray-800: oklch(27.8% 0.033 256.848);\n --color-gray-900: oklch(21% 0.034 264.665);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --text-base: 1rem;\n --text-base--line-height: calc(1.5 / 1);\n --text-xl: 1.25rem;\n --text-xl--line-height: calc(1.75 / 1.25);\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --radius-sm: 0.25rem;\n --radius-lg: 0.5rem;\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\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 }\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 ::-webkit-calendar-picker-indicator {\n line-height: 1;\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 .visible {\n visibility: visible;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .right-0 {\n right: calc(var(--spacing) * 0);\n }\n .bottom-0 {\n bottom: calc(var(--spacing) * 0);\n }\n .left-0 {\n left: calc(var(--spacing) * 0);\n }\n .z-0 {\n z-index: 0;\n }\n .z-50 {\n z-index: 50;\n }\n .mx-2 {\n margin-inline: calc(var(--spacing) * 2);\n }\n .mx-auto {\n margin-inline: auto;\n }\n .my-4 {\n margin-block: calc(var(--spacing) * 4);\n }\n .my-8 {\n margin-block: calc(var(--spacing) * 8);\n }\n .my-10 {\n margin-block: calc(var(--spacing) * 10);\n }\n .my-11 {\n margin-block: calc(var(--spacing) * 11);\n }\n .mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n .mt-1\\.5 {\n margin-top: calc(var(--spacing) * 1.5);\n }\n .mr-\\[10px\\] {\n margin-right: 10px;\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-3 {\n margin-bottom: calc(var(--spacing) * 3);\n }\n .mb-7 {\n margin-bottom: calc(var(--spacing) * 7);\n }\n .mb-10 {\n margin-bottom: calc(var(--spacing) * 10);\n }\n .mb-\\[5px\\] {\n margin-bottom: 5px;\n }\n .mb-\\[21px\\] {\n margin-bottom: 21px;\n }\n .mb-\\[31px\\] {\n margin-bottom: 31px;\n }\n .mb-\\[48px\\] {\n margin-bottom: 48px;\n }\n .mb-\\[50px\\] {\n margin-bottom: 50px;\n }\n .mb-\\[52px\\] {\n margin-bottom: 52px;\n }\n .mb-\\[150px\\] {\n margin-bottom: 150px;\n }\n .ml-2 {\n margin-left: calc(var(--spacing) * 2);\n }\n .ml-4 {\n margin-left: calc(var(--spacing) * 4);\n }\n .block {\n display: block;\n }\n .contents {\n display: contents;\n }\n .flex {\n display: flex;\n }\n .grid {\n display: grid;\n }\n .table {\n display: table;\n }\n .h-6 {\n height: calc(var(--spacing) * 6);\n }\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n .h-\\[79px\\] {\n height: 79px;\n }\n .h-\\[284px\\] {\n height: 284px;\n }\n .h-\\[300px\\] {\n height: 300px;\n }\n .h-\\[var\\(--a4-height\\)\\] {\n height: var(--a4-height);\n }\n .h-\\[var\\(--a4-height-with-padding\\)\\] {\n height: var(--a4-height-with-padding);\n }\n .h-full {\n height: 100%;\n }\n .min-h-screen {\n min-height: 100vh;\n }\n .w-1 {\n width: calc(var(--spacing) * 1);\n }\n .w-1\\/4 {\n width: calc(1/4 * 100%);\n }\n .w-8 {\n width: calc(var(--spacing) * 8);\n }\n .w-80 {\n width: calc(var(--spacing) * 80);\n }\n .w-\\[79px\\] {\n width: 79px;\n }\n .w-\\[400px\\] {\n width: 400px;\n }\n .w-\\[414px\\] {\n width: 414px;\n }\n .w-\\[490px\\] {\n width: 490px;\n }\n .w-\\[651px\\] {\n width: 651px;\n }\n .w-\\[var\\(--a4-width\\)\\] {\n width: var(--a4-width);\n }\n .w-\\[var\\(--a4-width-with-padding\\)\\] {\n width: var(--a4-width-with-padding);\n }\n .w-full {\n width: 100%;\n }\n .max-w-\\[582px\\] {\n max-width: 582px;\n }\n .flex-1 {\n flex: 1;\n }\n .flex-auto {\n flex: auto;\n }\n .flex-shrink {\n flex-shrink: 1;\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .border-collapse {\n border-collapse: collapse;\n }\n .-translate-x-full {\n --tw-translate-x: -100%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-0 {\n --tw-translate-x: calc(var(--spacing) * 0);\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 .resize {\n resize: both;\n }\n .list-decimal {\n list-style-type: decimal;\n }\n .list-disc {\n list-style-type: disc;\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-wrap {\n flex-wrap: wrap;\n }\n .items-center {\n align-items: center;\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 .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n .space-y-5 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-x-2 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .space-x-2\\.5 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 2.5) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-lg {\n border-radius: var(--radius-lg);\n }\n .rounded-sm {\n border-radius: var(--radius-sm);\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-dashed {\n --tw-border-style: dashed;\n border-style: dashed;\n }\n .border-solid {\n --tw-border-style: solid;\n border-style: solid;\n }\n .border-\\[\\#737373\\] {\n border-color: #737373;\n }\n .border-\\[\\#DC2626\\] {\n border-color: #DC2626;\n }\n .border-\\[\\#e5e5e5\\] {\n border-color: #e5e5e5;\n }\n .border-\\[\\#fff\\] {\n border-color: #fff;\n }\n .border-black {\n border-color: var(--color-black);\n }\n .border-gray-700 {\n border-color: var(--color-gray-700);\n }\n .bg-\\[\\#4A3AFF\\] {\n background-color: #4A3AFF;\n }\n .bg-\\[\\#737373\\] {\n background-color: #737373;\n }\n .bg-\\[\\#DC2626\\] {\n background-color: #DC2626;\n }\n .bg-\\[\\#F5F5F5\\] {\n background-color: #F5F5F5;\n }\n .bg-\\[\\#FEF2F2\\] {\n background-color: #FEF2F2;\n }\n .bg-black {\n background-color: var(--color-black);\n }\n .bg-cyan-600 {\n background-color: var(--color-cyan-600);\n }\n .bg-gray-800 {\n background-color: var(--color-gray-800);\n }\n .bg-gray-900 {\n background-color: var(--color-gray-900);\n }\n .bg-white {\n background-color: var(--color-white);\n }\n .object-cover {\n object-fit: cover;\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-\\[10px\\] {\n padding: 10px;\n }\n .p-\\[21px\\] {\n padding: 21px;\n }\n .px-\\[5px\\] {\n padding-inline: 5px;\n }\n .px-\\[14px\\] {\n padding-inline: 14px;\n }\n .px-\\[85px\\] {\n padding-inline: 85px;\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\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-\\[15px\\] {\n padding-top: 15px;\n }\n .pt-\\[102px\\] {\n padding-top: 102px;\n }\n .pt-\\[123px\\] {\n padding-top: 123px;\n }\n .pb-\\[177px\\] {\n padding-bottom: 177px;\n }\n .pl-5 {\n padding-left: calc(var(--spacing) * 5);\n }\n .pl-6 {\n padding-left: calc(var(--spacing) * 6);\n }\n .pl-8 {\n padding-left: calc(var(--spacing) * 8);\n }\n .text-center {\n text-align: center;\n }\n .indent-8 {\n text-indent: calc(var(--spacing) * 8);\n }\n .text-base {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--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-\\[13px\\] {\n font-size: 13px;\n }\n .text-\\[18\\.5px\\] {\n font-size: 18.5px;\n }\n .text-\\[18px\\] {\n font-size: 18px;\n }\n .text-\\[21px\\] {\n font-size: 21px;\n }\n .text-\\[24px\\] {\n font-size: 24px;\n }\n .text-\\[31px\\] {\n font-size: 31px;\n }\n .text-\\[40px\\] {\n font-size: 40px;\n }\n .text-\\[42px\\] {\n font-size: 42px;\n }\n .text-\\[48px\\] {\n font-size: 48px;\n }\n .text-\\[52px\\] {\n font-size: 52px;\n }\n .text-\\[94px\\] {\n font-size: 94px;\n }\n .text-\\[126px\\] {\n font-size: 126px;\n }\n .leading-\\[1\\.2\\] {\n --tw-leading: 1.2;\n line-height: 1.2;\n }\n .leading-\\[1\\.5\\] {\n --tw-leading: 1.5;\n line-height: 1.5;\n }\n .leading-\\[48px\\] {\n --tw-leading: 48px;\n line-height: 48px;\n }\n .leading-\\[149px\\] {\n --tw-leading: 149px;\n line-height: 149px;\n }\n .leading-\\[150\\%\\] {\n --tw-leading: 150%;\n line-height: 150%;\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 .tracking-\\[0\\.74px\\] {\n --tw-tracking: 0.74px;\n letter-spacing: 0.74px;\n }\n .tracking-\\[0\\.529px\\] {\n --tw-tracking: 0.529px;\n letter-spacing: 0.529px;\n }\n .tracking-\\[0\\.634px\\] {\n --tw-tracking: 0.634px;\n letter-spacing: 0.634px;\n }\n .text-\\[\\#0a0a0a\\] {\n color: #0a0a0a;\n }\n .text-\\[\\#000\\] {\n color: #000;\n }\n .text-\\[\\#737373\\] {\n color: #737373;\n }\n .text-\\[\\#DC2626\\] {\n color: #DC2626;\n }\n .text-white {\n color: var(--color-white);\n }\n .underline {\n text-decoration-line: underline;\n }\n .opacity-20 {\n opacity: 20%;\n }\n .opacity-50 {\n opacity: 50%;\n }\n .opacity-55 {\n opacity: 55%;\n }\n .opacity-80 {\n opacity: 80%;\n }\n .shadow-2xl {\n --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));\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-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 .transition-transform {\n transition-property: transform, translate, scale, rotate;\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-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}\n:root {\n --a4-width: 795px;\n --a4-height: 1123px;\n --a4-width-with-padding: 669px;\n --a4-height-with-padding: 827px;\n}\nhtml {\n font-size: 16px;\n}\nbody {\n margin: calc(var(--spacing) * 0);\n font-family: "source-han-serif-cn-subset", sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n line-height: 1.5;\n}\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace;\n}\n.indentP {\n margin-block: calc(var(--spacing) * 4);\n text-indent: calc(var(--spacing) * 8);\n}\n.section-sub-header {\n font-size: 18px;\n font-weight: 700;\n line-height: 150%;\n}\n.chapterCoverDimension {\n width: var(--a4-width);\n height: 1040px;\n}\n.chapterPage {\n margin-inline: auto;\n box-sizing: border-box;\n width: var(--a4-width-with-padding);\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)));\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-space-x-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-leading {\n syntax: "*";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: "*";\n inherits: false;\n}\n@property --tw-tracking {\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@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-space-x-reverse: 0;\n --tw-border-style: solid;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-tracking: 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';
1036
+ const style = '/*! tailwindcss v4.1.17 | 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-cyan-600: oklch(60.9% 0.126 221.723);\n --color-cyan-700: oklch(52% 0.105 223.128);\n --color-gray-700: oklch(37.3% 0.034 259.733);\n --color-gray-800: oklch(27.8% 0.033 256.848);\n --color-gray-900: oklch(21% 0.034 264.665);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --text-base: 1rem;\n --text-base--line-height: calc(1.5 / 1);\n --text-xl: 1.25rem;\n --text-xl--line-height: calc(1.75 / 1.25);\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --radius-sm: 0.25rem;\n --radius-lg: 0.5rem;\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\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 }\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 ::-webkit-calendar-picker-indicator {\n line-height: 1;\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 .visible {\n visibility: visible;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .right-0 {\n right: calc(var(--spacing) * 0);\n }\n .bottom-0 {\n bottom: calc(var(--spacing) * 0);\n }\n .left-0 {\n left: calc(var(--spacing) * 0);\n }\n .z-0 {\n z-index: 0;\n }\n .z-50 {\n z-index: 50;\n }\n .mx-2 {\n margin-inline: calc(var(--spacing) * 2);\n }\n .mx-auto {\n margin-inline: auto;\n }\n .my-4 {\n margin-block: calc(var(--spacing) * 4);\n }\n .my-8 {\n margin-block: calc(var(--spacing) * 8);\n }\n .my-10 {\n margin-block: calc(var(--spacing) * 10);\n }\n .my-11 {\n margin-block: calc(var(--spacing) * 11);\n }\n .mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n .mt-1\\.5 {\n margin-top: calc(var(--spacing) * 1.5);\n }\n .mr-\\[10px\\] {\n margin-right: 10px;\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-3 {\n margin-bottom: calc(var(--spacing) * 3);\n }\n .mb-7 {\n margin-bottom: calc(var(--spacing) * 7);\n }\n .mb-10 {\n margin-bottom: calc(var(--spacing) * 10);\n }\n .mb-\\[5px\\] {\n margin-bottom: 5px;\n }\n .mb-\\[21px\\] {\n margin-bottom: 21px;\n }\n .mb-\\[31px\\] {\n margin-bottom: 31px;\n }\n .mb-\\[48px\\] {\n margin-bottom: 48px;\n }\n .mb-\\[50px\\] {\n margin-bottom: 50px;\n }\n .mb-\\[52px\\] {\n margin-bottom: 52px;\n }\n .mb-\\[150px\\] {\n margin-bottom: 150px;\n }\n .ml-2 {\n margin-left: calc(var(--spacing) * 2);\n }\n .ml-4 {\n margin-left: calc(var(--spacing) * 4);\n }\n .block {\n display: block;\n }\n .contents {\n display: contents;\n }\n .flex {\n display: flex;\n }\n .grid {\n display: grid;\n }\n .table {\n display: table;\n }\n .h-6 {\n height: calc(var(--spacing) * 6);\n }\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n .h-\\[79px\\] {\n height: 79px;\n }\n .h-\\[284px\\] {\n height: 284px;\n }\n .h-\\[300px\\] {\n height: 300px;\n }\n .h-\\[var\\(--a4-height\\)\\] {\n height: var(--a4-height);\n }\n .h-\\[var\\(--a4-height-with-padding\\)\\] {\n height: var(--a4-height-with-padding);\n }\n .h-full {\n height: 100%;\n }\n .min-h-screen {\n min-height: 100vh;\n }\n .w-1 {\n width: calc(var(--spacing) * 1);\n }\n .w-1\\/4 {\n width: calc(1/4 * 100%);\n }\n .w-8 {\n width: calc(var(--spacing) * 8);\n }\n .w-80 {\n width: calc(var(--spacing) * 80);\n }\n .w-\\[79px\\] {\n width: 79px;\n }\n .w-\\[400px\\] {\n width: 400px;\n }\n .w-\\[414px\\] {\n width: 414px;\n }\n .w-\\[490px\\] {\n width: 490px;\n }\n .w-\\[651px\\] {\n width: 651px;\n }\n .w-\\[var\\(--a4-width\\)\\] {\n width: var(--a4-width);\n }\n .w-\\[var\\(--a4-width-with-padding\\)\\] {\n width: var(--a4-width-with-padding);\n }\n .w-full {\n width: 100%;\n }\n .max-w-\\[582px\\] {\n max-width: 582px;\n }\n .flex-1 {\n flex: 1;\n }\n .flex-auto {\n flex: auto;\n }\n .flex-shrink {\n flex-shrink: 1;\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .border-collapse {\n border-collapse: collapse;\n }\n .-translate-x-full {\n --tw-translate-x: -100%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-0 {\n --tw-translate-x: calc(var(--spacing) * 0);\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 .resize {\n resize: both;\n }\n .list-decimal {\n list-style-type: decimal;\n }\n .list-disc {\n list-style-type: disc;\n }\n .break-inside-avoid {\n break-inside: avoid;\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-wrap {\n flex-wrap: wrap;\n }\n .items-center {\n align-items: center;\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 .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n .space-y-5 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-x-2 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .space-x-2\\.5 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 2.5) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-lg {\n border-radius: var(--radius-lg);\n }\n .rounded-sm {\n border-radius: var(--radius-sm);\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-dashed {\n --tw-border-style: dashed;\n border-style: dashed;\n }\n .border-solid {\n --tw-border-style: solid;\n border-style: solid;\n }\n .border-\\[\\#737373\\] {\n border-color: #737373;\n }\n .border-\\[\\#DC2626\\] {\n border-color: #DC2626;\n }\n .border-\\[\\#e5e5e5\\] {\n border-color: #e5e5e5;\n }\n .border-\\[\\#fff\\] {\n border-color: #fff;\n }\n .border-black {\n border-color: var(--color-black);\n }\n .border-gray-700 {\n border-color: var(--color-gray-700);\n }\n .bg-\\[\\#4A3AFF\\] {\n background-color: #4A3AFF;\n }\n .bg-\\[\\#737373\\] {\n background-color: #737373;\n }\n .bg-\\[\\#DC2626\\] {\n background-color: #DC2626;\n }\n .bg-\\[\\#F5F5F5\\] {\n background-color: #F5F5F5;\n }\n .bg-\\[\\#FEF2F2\\] {\n background-color: #FEF2F2;\n }\n .bg-black {\n background-color: var(--color-black);\n }\n .bg-cyan-600 {\n background-color: var(--color-cyan-600);\n }\n .bg-gray-800 {\n background-color: var(--color-gray-800);\n }\n .bg-gray-900 {\n background-color: var(--color-gray-900);\n }\n .bg-white {\n background-color: var(--color-white);\n }\n .object-cover {\n object-fit: cover;\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-\\[10px\\] {\n padding: 10px;\n }\n .p-\\[21px\\] {\n padding: 21px;\n }\n .px-\\[5px\\] {\n padding-inline: 5px;\n }\n .px-\\[14px\\] {\n padding-inline: 14px;\n }\n .px-\\[85px\\] {\n padding-inline: 85px;\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\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-\\[15px\\] {\n padding-top: 15px;\n }\n .pt-\\[102px\\] {\n padding-top: 102px;\n }\n .pt-\\[123px\\] {\n padding-top: 123px;\n }\n .pb-\\[177px\\] {\n padding-bottom: 177px;\n }\n .pl-5 {\n padding-left: calc(var(--spacing) * 5);\n }\n .pl-6 {\n padding-left: calc(var(--spacing) * 6);\n }\n .pl-8 {\n padding-left: calc(var(--spacing) * 8);\n }\n .text-center {\n text-align: center;\n }\n .indent-8 {\n text-indent: calc(var(--spacing) * 8);\n }\n .text-base {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--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-\\[13px\\] {\n font-size: 13px;\n }\n .text-\\[18\\.5px\\] {\n font-size: 18.5px;\n }\n .text-\\[18px\\] {\n font-size: 18px;\n }\n .text-\\[21px\\] {\n font-size: 21px;\n }\n .text-\\[24px\\] {\n font-size: 24px;\n }\n .text-\\[31px\\] {\n font-size: 31px;\n }\n .text-\\[40px\\] {\n font-size: 40px;\n }\n .text-\\[42px\\] {\n font-size: 42px;\n }\n .text-\\[48px\\] {\n font-size: 48px;\n }\n .text-\\[52px\\] {\n font-size: 52px;\n }\n .text-\\[94px\\] {\n font-size: 94px;\n }\n .text-\\[126px\\] {\n font-size: 126px;\n }\n .leading-\\[1\\.2\\] {\n --tw-leading: 1.2;\n line-height: 1.2;\n }\n .leading-\\[1\\.5\\] {\n --tw-leading: 1.5;\n line-height: 1.5;\n }\n .leading-\\[48px\\] {\n --tw-leading: 48px;\n line-height: 48px;\n }\n .leading-\\[149px\\] {\n --tw-leading: 149px;\n line-height: 149px;\n }\n .leading-\\[150\\%\\] {\n --tw-leading: 150%;\n line-height: 150%;\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 .tracking-\\[0\\.74px\\] {\n --tw-tracking: 0.74px;\n letter-spacing: 0.74px;\n }\n .tracking-\\[0\\.529px\\] {\n --tw-tracking: 0.529px;\n letter-spacing: 0.529px;\n }\n .tracking-\\[0\\.634px\\] {\n --tw-tracking: 0.634px;\n letter-spacing: 0.634px;\n }\n .text-\\[\\#0a0a0a\\] {\n color: #0a0a0a;\n }\n .text-\\[\\#000\\] {\n color: #000;\n }\n .text-\\[\\#737373\\] {\n color: #737373;\n }\n .text-\\[\\#DC2626\\] {\n color: #DC2626;\n }\n .text-white {\n color: var(--color-white);\n }\n .underline {\n text-decoration-line: underline;\n }\n .opacity-20 {\n opacity: 20%;\n }\n .opacity-50 {\n opacity: 50%;\n }\n .opacity-55 {\n opacity: 55%;\n }\n .opacity-80 {\n opacity: 80%;\n }\n .shadow-2xl {\n --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));\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-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 .transition-transform {\n transition-property: transform, translate, scale, rotate;\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-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}\n:root {\n --a4-width: 795px;\n --a4-height: 1123px;\n --a4-width-with-padding: 669px;\n --a4-height-with-padding: 827px;\n}\nhtml {\n font-size: 16px;\n}\nbody {\n margin: calc(var(--spacing) * 0);\n font-family: "source-han-serif-cn-subset", sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n line-height: 1.5;\n}\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace;\n}\n.indentP {\n margin-block: calc(var(--spacing) * 4);\n text-indent: calc(var(--spacing) * 8);\n}\n.section-sub-header {\n font-size: 18px;\n font-weight: 700;\n line-height: 150%;\n}\n.chapterCoverDimension {\n width: var(--a4-width);\n height: 1040px;\n}\n.chapterPage {\n margin-inline: auto;\n box-sizing: border-box;\n width: var(--a4-width-with-padding);\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)));\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-space-x-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-leading {\n syntax: "*";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: "*";\n inherits: false;\n}\n@property --tw-tracking {\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@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-space-x-reverse: 0;\n --tw-border-style: solid;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-tracking: 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';
1016
1037
  const generateData$a = (rawData) => {
1017
1038
  const categoryData = [];
1018
1039
  const values2 = [];
@@ -2686,6 +2707,33 @@ async function generatePDFWithDifferentHeaders(params) {
2686
2707
  }
2687
2708
  return outputPath;
2688
2709
  }
2710
+ const logger = winston.createLogger({
2711
+ level: "info",
2712
+ format: winston.format.json(),
2713
+ defaultMeta: { service: "user-service" },
2714
+ transports: [
2715
+ //
2716
+ // - Write all logs with importance level of `error` or higher to `error.log`
2717
+ // (i.e., error, fatal, but not other levels)
2718
+ //
2719
+ new winston.transports.File({
2720
+ filename: "loggererror.log",
2721
+ level: "error"
2722
+ }),
2723
+ //
2724
+ // - Write all logs with importance level of `info` or higher to `combined.log`
2725
+ // (i.e., fatal, error, warn, and info, but not trace)
2726
+ //
2727
+ new winston.transports.File({ filename: "logercombined.log" })
2728
+ ]
2729
+ });
2730
+ if (process.env.NODE_ENV !== "production") {
2731
+ logger.add(
2732
+ new winston.transports.Console({
2733
+ format: winston.format.simple()
2734
+ })
2735
+ );
2736
+ }
2689
2737
  const tool = {
2690
2738
  name: "generate_finance_pdf",
2691
2739
  description: "通过股票数据,生成pdf",
@@ -2693,6 +2741,7 @@ const tool = {
2693
2741
  };
2694
2742
  const toolHandler = async (args) => {
2695
2743
  try {
2744
+ logger.info(`start: ${(/* @__PURE__ */ new Date()).getTime()}`);
2696
2745
  const kline_daily2 = await getJsonDataIfExists(args.kline_data_path, []);
2697
2746
  const resp = generatePdfHtml({ ...args, kline_daily: kline_daily2 });
2698
2747
  const pdfUrl = await generatePDFWithDifferentHeaders({
@@ -2701,6 +2750,7 @@ const toolHandler = async (args) => {
2701
2750
  headerSubTitle: "宁德时代(300750.SZ)- 技术指标分析报告",
2702
2751
  footerTitle: "本报告由 Wujie Agent 生成"
2703
2752
  });
2753
+ logger.info(`end: ${(/* @__PURE__ */ new Date()).getTime()}`);
2704
2754
  return {
2705
2755
  content: [
2706
2756
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@8btc/finance-assistant-mcp",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "description": "财经agent辅助mcp工具",
5
5
  "main": "dist/index.cjs",
6
6
  "type": "module",