@growgroup/visual-editor 0.7.2 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -1
- package/dist/editor.css +1 -1
- package/package.json +1 -1
- package/src/editor/components/EditorCanvas.tsx +2 -2
- package/src/editor/components/EditorFooter.tsx +4 -1
- package/src/editor/components/EditorPropertyPanel.tsx +6 -9
- package/src/editor/components/ppt/PptChrome.tsx +20 -6
- package/src/editor/components/property-panel/BorderSection.tsx +3 -1
- package/src/editor/hooks/useLinkNavigation.ts +2 -2
- package/src/editor/types.ts +5 -1
- package/src/editor/utils/border-sides.ts +112 -0
- package/src/editor/utils/dom-utils.ts +18 -2
- package/src/editor/utils/link-navigation.ts +61 -29
- package/src/editor/utils/style-utils.ts +10 -4
- package/src/editor/utils/tailwind-mappings.ts +2 -7
- package/src/editor/utils/tailwind-utils.ts +105 -0
- package/src/version.ts +1 -1
package/README.md
CHANGED
|
@@ -107,7 +107,7 @@ setEditorIO({
|
|
|
107
107
|
- ページを移るときは、未保存の変更を先に保存してから移る(入口がフレームのクリックでも `contentId` プロップの変更でも同じ)
|
|
108
108
|
- 複数選択はキャンバスの余白からドラッグ(マーキー)。ページの中に空白が無くても、余白から引けば帯がまたいだ要素が選ばれる
|
|
109
109
|
- `contentList[].parentId` を渡すと、フレームがサイトマップの階層(親の下に子)のツリーで並び、親子が線でつながる(0.3.1)
|
|
110
|
-
- 紙面のリンクを
|
|
110
|
+
- 紙面のリンクを ⌥ Option + クリック(Windows は Alt + クリック)すると、リンク先へ移る。同じサイトのページは `contentList[].href` と照らし合わせてそのページを編集中にし(表記の揺れ `/company/`・`index.html`・相対パス・`?`・`#` も同じページ)、`#id` はその場所へ紙面を寄せ、別のサイトは新しいタブで開く。仕組みと、⌘ / Ctrl クリック(最下層の選択・レイヤーパネルの複数選択)から変えた理由は `docs/link-nav-2026-09.md`
|
|
111
111
|
- `contentList[].href` を渡すと、フレーム名と一覧に「別タブで開く」が付く。`contentList[].revision` を進めると、そのページの紙面が読み直される(外からファイルが変わったとき)
|
|
112
112
|
- `contentList[].thumbnail` にページ全体を写した画像(PNG / JPEG、幅 480px 以上、縦横比はページと同じ)の URL を渡すと、大きく縮めた表示で紙面が iframe ではなくその画像になり、縮小が軽くなる。実測で縮小の p95 が 26.5ms → 18.4ms、50ms を超えるフレームが 0 回。画像を出す倍率の上限は画像の解像度と `devicePixelRatio` から決まり(`min(0.5, 画像の幅 × 1.25 ÷ (紙面の幅 × DPR))`)、**Retina では 960px の画像だと 31% まで**。にじんで見えないように、それより拡大すると iframe に戻る。解像度の高い画像を渡せば上限は 0.5 まで上がる。縮小している最中も、上限 × 0.8 を割った時点で(画像が読めていれば)切り替わる。内容が変わったら URL も変える(`&v=…`)。渡さないページ・画像が読めなかったページは今までどおり iframe(0.4.0)
|
|
113
113
|
- `documentAttributes={{ "data-notes": "0" }}` のように渡すと、編集中の文書と紙面の `<html>` に読み直さずに属性が付く(利用側の CSS で表示を切り替える)
|
|
@@ -166,6 +166,23 @@ setEditorIO({
|
|
|
166
166
|
ブラウザがページから iframe の中を読ませないため、エディタ自体が動きません
|
|
167
167
|
- 仕組みと確かめたことは [docs/collab-2026-09.md](docs/collab-2026-09.md)
|
|
168
168
|
|
|
169
|
+
### 線の欄・リンク移動のキー・キャンバスのラベル崩れ(0.8.0)
|
|
170
|
+
|
|
171
|
+
- **リンク先へ移るのは Alt(Mac は ⌥ Option)+ クリック**になりました(0.7.0 は ⌘ / Ctrl + クリック)。
|
|
172
|
+
⌘ / Ctrl + クリックは「最下層の要素を選ぶ」に戻り、レイヤーパネルの複数選択とぶつからなくなりました。
|
|
173
|
+
Alt を押してリンクの上にいると行き先の案内が出ます。⌘ / Ctrl / Shift と一緒に押したときは移りません。
|
|
174
|
+
仕組みと変えた理由は [docs/link-nav-2026-09.md](docs/link-nav-2026-09.md)
|
|
175
|
+
- **線(border)の欄**が片側だけの線を扱えるようになりました
|
|
176
|
+
- 左だけ 2px の線(`border-l-2`)を選ぶと、線幅の欄に 2 と出ます(今までは 0)。線幅を変えても**その辺だけ**が変わります(四辺の枠になりません)
|
|
177
|
+
- 線色・線幅を変えても、他の種類のクラス(`border-l-2`・`border-wf-ink`・`border-dashed`・`border-collapse`)は消えません
|
|
178
|
+
- スタイルの「なし」が紙面に効きます。線幅・スタイルはクラスと一緒にインラインにも書きます
|
|
179
|
+
(紙面の CSS はファイルに書かれたクラスの分しか作られないため)
|
|
180
|
+
- スライドのリボンの「図形の枠線」も同じです。線の無い図形に色を選んだときに 2px を立てる動きは今までどおりです
|
|
181
|
+
- 原因と確かめたことは [docs/border-fixes-2026-09.md](docs/border-fixes-2026-09.md)
|
|
182
|
+
- **キャンバス表示でスライドのラベルが見出しに重なる**件を直しました。スライドを開くときの絶対配置への変換で、
|
|
183
|
+
変換しないインライン要素(ラベルなど)が動いたときも巻き戻します。原因と確かめたことは
|
|
184
|
+
[docs/canvas-label-2026-09.md](docs/canvas-label-2026-09.md)
|
|
185
|
+
|
|
169
186
|
### テキスト編集の Enter・文字の一部の書式・サイズ欄の最小・最大(0.7.0)
|
|
170
187
|
|
|
171
188
|
- テキスト編集中の **Enter は、同じ要素の中の改行(`<br>`)**です(Shift+Enter と同じ)。段落を分けて別の要素にはしません。
|
package/dist/editor.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-space-x-reverse:0}}}:root,:host{--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-900:oklch(39.6% .141 25.723);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-sky-400:oklch(74.6% .16 232.661);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-purple-200:oklch(90.2% .063 306.703);--color-purple-300:oklch(82.7% .119 306.383);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-600:oklch(55.8% .288 302.321);--color-purple-700:oklch(49.6% .265 301.924);--color-purple-900:oklch(38.1% .176 304.987);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-lg:32rem;--container-2xl:42rem;--container-3xl:48rem;--container-6xl:72rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-6xl:3.75rem;--text-6xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--text-8xl:6rem;--text-8xl--line-height:1;--text-9xl:8rem;--text-9xl--line-height:1;--font-weight-thin:100;--font-weight-extralight:200;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--font-weight-black:900;--tracking-tight:-.025em;--tracking-widest:.1em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--shadow-sm:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--shadow-md:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--drop-shadow-md:0 3px 3px #0000001f;--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--blur-sm:8px;--aspect-video:16 / 9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--radius:.5rem;--color-background:#fff;--color-foreground:#0a0a0a;--color-card:#fff;--color-card-foreground:#0a0a0a;--color-popover:#fff;--color-popover-foreground:#0a0a0a;--color-primary:#171717;--color-primary-foreground:#fafafa;--color-secondary:#f5f5f5;--color-secondary-foreground:#171717;--color-muted:#f5f5f5;--color-muted-foreground:#737373;--color-accent:#f5f5f5;--color-accent-foreground:#171717;--color-destructive:#ef4444;--color-destructive-foreground:#fafafa;--color-border:#e5e5e5;--color-input:#e5e5e5;--color-ring:#0a0a0a;--color-gg-green:#316a40;--color-ink:#2e2e2e;--color-mark-green:#cfe6d6}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-auto{inset:auto}.inset-x-2{inset-inline:calc(var(--spacing) * 2)}.top-0{top:0}.top-1{top:var(--spacing)}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-4{top:calc(var(--spacing) * 4)}.top-\[50\%\]{top:50%}.top-auto{top:auto}.top-full{top:100%}.right-0{right:0}.right-1{right:var(--spacing)}.right-1\.5{right:calc(var(--spacing) * 1.5)}.right-1\/2{right:50%}.right-2{right:calc(var(--spacing) * 2)}.right-4{right:calc(var(--spacing) * 4)}.right-8{right:calc(var(--spacing) * 8)}.right-\[24px\]{right:24px}.right-auto{right:auto}.right-full{right:100%}.bottom-0{bottom:0}.bottom-0\.5{bottom:calc(var(--spacing) * .5)}.bottom-1{bottom:var(--spacing)}.bottom-1\/2{bottom:50%}.bottom-5{bottom:calc(var(--spacing) * 5)}.bottom-8{bottom:calc(var(--spacing) * 8)}.bottom-16{bottom:calc(var(--spacing) * 16)}.bottom-20{bottom:calc(var(--spacing) * 20)}.bottom-\[24px\]{bottom:24px}.bottom-auto{bottom:auto}.bottom-full{bottom:100%}.left-0{left:0}.left-1{left:var(--spacing)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-2\.5{left:calc(var(--spacing) * 2.5)}.left-4{left:calc(var(--spacing) * 4)}.left-\[36px\]{left:36px}.left-\[50\%\]{left:50%}.left-\[96px\]{left:96px}.left-\[142px\]{left:142px}.left-auto{left:auto}.left-full{left:100%}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.z-\[70\]{z-index:70}.z-\[100\]{z-index:100}.z-\[1000\]{z-index:1000}.z-\[9999\]{z-index:9999}.z-auto{z-index:auto}.-order-1{order:calc(1 * -1)}.order-1{order:1}.order-2{order:2}.order-first{order:-9999}.order-last{order:9999}.order-none{order:0}.col-span-7{grid-column:span 7/span 7}.\!container{width:100%!important}@media (min-width:40rem){.\!container{max-width:40rem!important}}@media (min-width:48rem){.\!container{max-width:48rem!important}}@media (min-width:64rem){.\!container{max-width:64rem!important}}@media (min-width:80rem){.\!container{max-width:80rem!important}}@media (min-width:96rem){.\!container{max-width:96rem!important}}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.-m-0\.5{margin:calc(var(--spacing) * -.5)}.m-0{margin:0}.m-3{margin:calc(var(--spacing) * 3)}.m-auto{margin:auto}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-6{margin-inline:calc(var(--spacing) * -6)}.mx-0\.5{margin-inline:calc(var(--spacing) * .5)}.mx-1{margin-inline:var(--spacing)}.mx-1\.5{margin-inline:calc(var(--spacing) * 1.5)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-auto{margin-inline:auto}.my-1{margin-block:var(--spacing)}.my-2{margin-block:calc(var(--spacing) * 2)}.mt-0{margin-top:0}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-12{margin-top:calc(var(--spacing) * 12)}.mt-\[22px\]{margin-top:22px}.mt-auto{margin-top:auto}.mt-px{margin-top:1px}.mr-0{margin-right:0}.mr-0\.5{margin-right:calc(var(--spacing) * .5)}.mr-1{margin-right:var(--spacing)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-auto{margin-right:auto}.mb-0{margin-bottom:0}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:var(--spacing)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-auto{margin-bottom:auto}.ml-0{margin-left:0}.ml-1{margin-left:var(--spacing)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.list-item{display:list-item}.table{display:table}.aspect-\[4\/3\]{aspect-ratio:4/3}.aspect-auto{aspect-ratio:auto}.aspect-square{aspect-ratio:1}.aspect-video{aspect-ratio:var(--aspect-video)}.\!h-5{height:calc(var(--spacing) * 5)!important}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1{height:var(--spacing)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-1\/2{height:50%}.h-1\/3{height:33.3333%}.h-1\/4{height:25%}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-2\/3{height:66.6667%}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-3\/4{height:75%}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-24{height:calc(var(--spacing) * 24)}.h-32{height:calc(var(--spacing) * 32)}.h-40{height:calc(var(--spacing) * 40)}.h-48{height:calc(var(--spacing) * 48)}.h-64{height:calc(var(--spacing) * 64)}.h-96{height:calc(var(--spacing) * 96)}.h-\[1px\]{height:1px}.h-\[2\.5px\]{height:2.5px}.h-\[3px\]{height:3px}.h-\[4px\]{height:4px}.h-\[22px\]{height:22px}.h-\[26px\]{height:26px}.h-\[30px\]{height:30px}.h-\[56px\]{height:56px}.h-\[58px\]{height:58px}.h-\[64px\]{height:64px}.h-\[72px\]{height:72px}.h-\[82vh\]{height:82vh}.h-\[90vh\]{height:90vh}.h-\[96px\]{height:96px}.h-\[104px\]{height:104px}.h-\[240px\]{height:240px}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-dvh{height:100dvh}.h-fit{height:fit-content}.h-full{height:100%}.h-max{height:max-content}.h-min{height:min-content}.h-px{height:1px}.h-screen{height:100vh}.max-h-24{max-height:calc(var(--spacing) * 24)}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-\[--radix-context-menu-content-available-height\]{max-height:--radix-context-menu-content-available-height}.max-h-\[--radix-select-content-available-height\]{max-height:--radix-select-content-available-height}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[240px\]{max-height:240px}.max-h-\[300px\]{max-height:300px}.max-h-\[420px\]{max-height:420px}.max-h-\[860px\]{max-height:860px}.max-h-\[var\(--radix-dropdown-menu-content-available-height\)\]{max-height:var(--radix-dropdown-menu-content-available-height)}.max-h-dvh{max-height:100dvh}.max-h-fit{max-height:fit-content}.max-h-full{max-height:100%}.max-h-max{max-height:max-content}.max-h-min{max-height:min-content}.max-h-none{max-height:none}.max-h-screen{max-height:100vh}.min-h-0{min-height:0}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-\[40px\]{min-height:40px}.min-h-\[44px\]{min-height:44px}.min-h-\[52px\]{min-height:52px}.min-h-\[60px\]{min-height:60px}.min-h-\[80px\]{min-height:80px}.min-h-\[100px\]{min-height:100px}.min-h-\[150px\]{min-height:150px}.min-h-dvh{min-height:100dvh}.min-h-fit{min-height:fit-content}.min-h-full{min-height:100%}.min-h-max{min-height:max-content}.min-h-min{min-height:min-content}.min-h-screen{min-height:100vh}.\!w-5{width:calc(var(--spacing) * 5)!important}.w-0\.5{width:calc(var(--spacing) * .5)}.w-1{width:var(--spacing)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-1\/2{width:50%}.w-1\/3{width:33.3333%}.w-1\/4{width:25%}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-2\/3{width:66.6667%}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-32{width:calc(var(--spacing) * 32)}.w-48{width:calc(var(--spacing) * 48)}.w-52{width:calc(var(--spacing) * 52)}.w-56{width:calc(var(--spacing) * 56)}.w-60{width:calc(var(--spacing) * 60)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-\[1px\]{width:1px}.w-\[16px\]{width:16px}.w-\[22px\]{width:22px}.w-\[38px\]{width:38px}.w-\[52px\]{width:52px}.w-\[54px\]{width:54px}.w-\[56px\]{width:56px}.w-\[62px\]{width:62px}.w-\[64px\]{width:64px}.w-\[68px\]{width:68px}.w-\[72px\]{width:72px}.w-\[90vw\]{width:90vw}.w-\[95vw\]{width:95vw}.w-\[136px\]{width:136px}.w-\[160px\]{width:160px}.w-\[180px\]{width:180px}.w-\[212px\]{width:212px}.w-\[220px\]{width:220px}.w-\[264px\]{width:264px}.w-\[280px\]{width:280px}.w-\[300px\]{width:300px}.w-\[400px\]{width:400px}.w-\[min\(1080px\,94vw\)\]{width:min(1080px,94vw)}.w-\[min\(1100px\,95vw\)\]{width:min(1100px,95vw)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-min{width:min-content}.w-px{width:1px}.w-screen{width:100vw}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-20{max-width:calc(var(--spacing) * 20)}.max-w-\[40px\]{max-width:40px}.max-w-\[80px\]{max-width:80px}.max-w-\[90px\]{max-width:90px}.max-w-\[420px\]{max-width:420px}.max-w-\[calc\(100\%-5rem\)\]{max-width:calc(100% - 5rem)}.max-w-fit{max-width:fit-content}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-max{max-width:max-content}.max-w-min{max-width:min-content}.max-w-none{max-width:none}.min-w-0{min-width:0}.min-w-\[3\.5rem\]{min-width:3.5rem}.min-w-\[8rem\]{min-width:8rem}.min-w-\[52px\]{min-width:52px}.min-w-\[60px\]{min-width:60px}.min-w-\[176px\]{min-width:176px}.min-w-\[300px\]{min-width:300px}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-fit{min-width:fit-content}.min-w-full{min-width:100%}.min-w-max{min-width:max-content}.min-w-min{min-width:min-content}.flex-1{flex:1}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-0{flex-basis:0}.basis-1\/2{flex-basis:50%}.basis-auto{flex-basis:auto}.basis-full{flex-basis:100%}.border-collapse{border-collapse:collapse}.origin-\[--radix-context-menu-content-transform-origin\]{transform-origin:--radix-context-menu-content-transform-origin}.origin-\[--radix-dropdown-menu-content-transform-origin\]{transform-origin:--radix-dropdown-menu-content-transform-origin}.origin-\[--radix-popover-content-transform-origin\]{transform-origin:--radix-popover-content-transform-origin}.origin-\[--radix-select-content-transform-origin\]{transform-origin:--radix-select-content-transform-origin}.origin-\[--radix-tooltip-content-transform-origin\]{transform-origin:--radix-tooltip-content-transform-origin}.origin-top-left{transform-origin:0 0}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-75{--tw-scale-x:75%;--tw-scale-y:75%;--tw-scale-z:75%;scale:var(--tw-scale-x) var(--tw-scale-y)}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.cursor-alias{cursor:alias}.cursor-all-scroll{cursor:all-scroll}.cursor-auto{cursor:auto}.cursor-cell{cursor:cell}.cursor-col-resize{cursor:col-resize}.cursor-context-menu{cursor:context-menu}.cursor-copy{cursor:copy}.cursor-crosshair{cursor:crosshair}.cursor-default{cursor:default}.cursor-e-resize{cursor:e-resize}.cursor-ew-resize{cursor:ew-resize}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-help{cursor:help}.cursor-move{cursor:move}.cursor-n-resize{cursor:n-resize}.cursor-ne-resize{cursor:ne-resize}.cursor-nesw-resize{cursor:nesw-resize}.cursor-no-drop{cursor:no-drop}.cursor-none{cursor:none}.cursor-not-allowed{cursor:not-allowed}.cursor-ns-resize{cursor:ns-resize}.cursor-nw-resize{cursor:nw-resize}.cursor-nwse-resize{cursor:nwse-resize}.cursor-pointer{cursor:pointer}.cursor-progress{cursor:progress}.cursor-row-resize{cursor:row-resize}.cursor-s-resize{cursor:s-resize}.cursor-se-resize{cursor:se-resize}.cursor-sw-resize{cursor:sw-resize}.cursor-text{cursor:text}.cursor-vertical-text{cursor:vertical-text}.cursor-w-resize{cursor:w-resize}.cursor-wait{cursor:wait}.cursor-zoom-in{cursor:zoom-in}.cursor-zoom-out{cursor:zoom-out}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.\[appearance\:textfield\]{appearance:textfield}.appearance-none{appearance:none}.grid-flow-col{grid-auto-flow:column}.grid-flow-col-dense{grid-auto-flow:column dense}.grid-flow-dense{grid-auto-flow:dense}.grid-flow-row{grid-auto-flow:row}.grid-flow-row-dense{grid-auto-flow:dense}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-cols-none{grid-template-columns:none}.grid-cols-subgrid{grid-template-columns:subgrid}.grid-rows-none{grid-template-rows:none}.grid-rows-subgrid{grid-template-rows:subgrid}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.content-around{align-content:space-around}.content-baseline{align-content:baseline}.content-between{align-content:space-between}.content-center{align-content:center}.content-end{align-content:flex-end}.content-evenly{align-content:space-evenly}.content-start{align-content:flex-start}.content-stretch{align-content:stretch}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-around{justify-content:space-around}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-evenly{justify-content:space-evenly}.justify-start{justify-content:flex-start}.justify-stretch{justify-content:stretch}.gap-0{gap:0}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-\[3px\]{gap:3px}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-0{column-gap:0}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-y-0{row-gap:0}.gap-y-1\.5{row-gap:calc(var(--spacing) * 1.5)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.self-auto{align-self:auto}.self-baseline{align-self:baseline}.self-center{align-self:center}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-clip{overflow:clip}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-x-clip{overflow-x:clip}.overflow-x-hidden{overflow-x:hidden}.overflow-x-scroll{overflow-x:scroll}.overflow-x-visible{overflow-x:visible}.overflow-y-auto{overflow-y:auto}.overflow-y-clip{overflow-y:clip}.overflow-y-hidden{overflow-y:hidden}.overflow-y-scroll{overflow-y:scroll}.overflow-y-visible{overflow-y:visible}.rounded{border-radius:var(--radius)}.rounded-\[2px\]{border-radius:2px}.rounded-\[3px\]{border-radius:3px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.rounded-l{border-top-left-radius:var(--radius);border-bottom-left-radius:var(--radius)}.rounded-tl{border-top-left-radius:var(--radius)}.rounded-r{border-top-right-radius:var(--radius);border-bottom-right-radius:var(--radius)}.rounded-tr{border-top-right-radius:var(--radius)}.rounded-br{border-bottom-right-radius:var(--radius)}.rounded-bl{border-bottom-left-radius:var(--radius)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-0{border-left-style:var(--tw-border-style);border-left-width:0}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-dotted{--tw-border-style:dotted;border-style:dotted}.border-double{--tw-border-style:double;border-style:double}.border-hidden{--tw-border-style:hidden;border-style:hidden}.border-none{--tw-border-style:none;border-style:none}.border-solid{--tw-border-style:solid;border-style:solid}.border-\[\#0d99ff\]{border-color:#0d99ff}.border-\[\#0d99ff\]\/30{border-color:oklab(66.9841% -.0648249 -.170866/.3)}.border-\[\#0d99ff\]\/50{border-color:oklab(66.9841% -.0648249 -.170866/.5)}.border-\[\#0d99ff\]\/60{border-color:oklab(66.9841% -.0648249 -.170866/.6)}.border-\[\#4a4a4a\]{border-color:#4a4a4a}.border-\[\#5d5d5d\]{border-color:#5d5d5d}.border-\[\#444444\]{border-color:#444}.border-\[\#444444\]\/50{border-color:oklab(38.6654% 0 0/.5)}.border-amber-500{border-color:var(--color-amber-500)}.border-amber-500\/60{border-color:#f99c0099}@supports (color:color-mix(in lab, red, red)){.border-amber-500\/60{border-color:color-mix(in oklab, var(--color-amber-500) 60%, transparent)}}.border-blue-600\/30{border-color:#155dfc4d}@supports (color:color-mix(in lab, red, red)){.border-blue-600\/30{border-color:color-mix(in oklab, var(--color-blue-600) 30%, transparent)}}.border-blue-600\/40{border-color:#155dfc66}@supports (color:color-mix(in lab, red, red)){.border-blue-600\/40{border-color:color-mix(in oklab, var(--color-blue-600) 40%, transparent)}}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-500{border-color:var(--color-gray-500)}.border-gray-700{border-color:var(--color-gray-700)}.border-green-500\/30{border-color:#00c7584d}@supports (color:color-mix(in lab, red, red)){.border-green-500\/30{border-color:color-mix(in oklab, var(--color-green-500) 30%, transparent)}}.border-green-600{border-color:var(--color-green-600)}.border-input{border-color:var(--color-input)}.border-primary{border-color:var(--color-primary)}.border-primary\/50{border-color:#17171780}@supports (color:color-mix(in lab, red, red)){.border-primary\/50{border-color:color-mix(in oklab, var(--color-primary) 50%, transparent)}}.border-purple-500{border-color:var(--color-purple-500)}.border-purple-500\/30{border-color:#ac4bff4d}@supports (color:color-mix(in lab, red, red)){.border-purple-500\/30{border-color:color-mix(in oklab, var(--color-purple-500) 30%, transparent)}}.border-purple-500\/50{border-color:#ac4bff80}@supports (color:color-mix(in lab, red, red)){.border-purple-500\/50{border-color:color-mix(in oklab, var(--color-purple-500) 50%, transparent)}}.border-red-500\/50{border-color:#fb2c3680}@supports (color:color-mix(in lab, red, red)){.border-red-500\/50{border-color:color-mix(in oklab, var(--color-red-500) 50%, transparent)}}.border-transparent{border-color:#0000}.border-white{border-color:var(--color-white)}.border-yellow-500\/30{border-color:#edb2004d}@supports (color:color-mix(in lab, red, red)){.border-yellow-500\/30{border-color:color-mix(in oklab, var(--color-yellow-500) 30%, transparent)}}.border-t-blue-500{border-top-color:var(--color-blue-500)}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-\[\#0F6CBD\]{background-color:#0f6cbd}.bg-\[\#0d99ff\]{background-color:#0d99ff}.bg-\[\#0d99ff\]\/10{background-color:oklab(66.9841% -.0648249 -.170866/.1)}.bg-\[\#0d99ff\]\/15{background-color:oklab(66.9841% -.0648249 -.170866/.15)}.bg-\[\#0d99ff\]\/20{background-color:oklab(66.9841% -.0648249 -.170866/.2)}.bg-\[\#0d99ff\]\/25{background-color:oklab(66.9841% -.0648249 -.170866/.25)}.bg-\[\#0d99ff\]\/30{background-color:oklab(66.9841% -.0648249 -.170866/.3)}.bg-\[\#0d99ff\]\/40{background-color:oklab(66.9841% -.0648249 -.170866/.4)}.bg-\[\#1e1e1e\]{background-color:#1e1e1e}.bg-\[\#2a2a2a\]{background-color:#2a2a2a}.bg-\[\#2c2c2c\]{background-color:#2c2c2c}.bg-\[\#2e2e2e\]{background-color:#2e2e2e}.bg-\[\#4a4a4a\]{background-color:#4a4a4a}.bg-\[\#5a5a5a\]{background-color:#5a5a5a}.bg-\[\#37373d\]{background-color:#37373d}.bg-\[\#383838\]{background-color:#383838}.bg-\[\#444444\]{background-color:#444}.bg-\[\#444444\]\/20{background-color:oklab(38.6654% 0 0/.2)}.bg-\[\#C43E1C\]{background-color:#c43e1c}.bg-\[\#ff0000\]{background-color:red}.bg-amber-600{background-color:var(--color-amber-600)}.bg-background{background-color:var(--color-background)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-black\/80{background-color:#000c}@supports (color:color-mix(in lab, red, red)){.bg-black\/80{background-color:color-mix(in oklab, var(--color-black) 80%, transparent)}}.bg-black\/90{background-color:#000000e6}@supports (color:color-mix(in lab, red, red)){.bg-black\/90{background-color:color-mix(in oklab, var(--color-black) 90%, transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-border{background-color:var(--color-border)}.bg-card{background-color:var(--color-card)}.bg-destructive{background-color:var(--color-destructive)}.bg-gg-green{background-color:var(--color-gg-green)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab, red, red)){.bg-green-500\/10{background-color:color-mix(in oklab, var(--color-green-500) 10%, transparent)}}.bg-green-600{background-color:var(--color-green-600)}.bg-mark-green{background-color:var(--color-mark-green)}.bg-muted{background-color:var(--color-muted)}.bg-popover{background-color:var(--color-popover)}.bg-primary{background-color:var(--color-primary)}.bg-primary\/20{background-color:#17171733}@supports (color:color-mix(in lab, red, red)){.bg-primary\/20{background-color:color-mix(in oklab, var(--color-primary) 20%, transparent)}}.bg-purple-500{background-color:var(--color-purple-500)}.bg-purple-500\/10{background-color:#ac4bff1a}@supports (color:color-mix(in lab, red, red)){.bg-purple-500\/10{background-color:color-mix(in oklab, var(--color-purple-500) 10%, transparent)}}.bg-purple-500\/20{background-color:#ac4bff33}@supports (color:color-mix(in lab, red, red)){.bg-purple-500\/20{background-color:color-mix(in oklab, var(--color-purple-500) 20%, transparent)}}.bg-purple-600{background-color:var(--color-purple-600)}.bg-purple-600\/30{background-color:#9810fa4d}@supports (color:color-mix(in lab, red, red)){.bg-purple-600\/30{background-color:color-mix(in oklab, var(--color-purple-600) 30%, transparent)}}.bg-purple-900\/30{background-color:#59168b4d}@supports (color:color-mix(in lab, red, red)){.bg-purple-900\/30{background-color:color-mix(in oklab, var(--color-purple-900) 30%, transparent)}}.bg-purple-900\/50{background-color:#59168b80}@supports (color:color-mix(in lab, red, red)){.bg-purple-900\/50{background-color:color-mix(in oklab, var(--color-purple-900) 50%, transparent)}}.bg-red-500\/20{background-color:#fb2c3633}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/20{background-color:color-mix(in oklab, var(--color-red-500) 20%, transparent)}}.bg-red-500\/90{background-color:#fb2c36e6}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/90{background-color:color-mix(in oklab, var(--color-red-500) 90%, transparent)}}.bg-red-600{background-color:var(--color-red-600)}.bg-secondary{background-color:var(--color-secondary)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/15{background-color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.bg-white\/15{background-color:color-mix(in oklab, var(--color-white) 15%, transparent)}}.bg-white\/20{background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.bg-white\/20{background-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.bg-yellow-500\/10{background-color:#edb2001a}@supports (color:color-mix(in lab, red, red)){.bg-yellow-500\/10{background-color:color-mix(in oklab, var(--color-yellow-500) 10%, transparent)}}.bg-cover{background-size:cover}.bg-center{background-position:50%}.fill-current{fill:currentColor}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.object-fill{object-fit:fill}.object-none{object-fit:none}.object-scale-down{object-fit:scale-down}.object-bottom{object-position:bottom}.object-center{object-position:center}.object-left{object-position:left}.object-left-bottom{object-position:left bottom}.object-left-top{object-position:left top}.object-right{object-position:right}.object-right-bottom{object-position:right bottom}.object-right-top{object-position:right top}.object-top{object-position:top}.p-0{padding:0}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-\[1px\]{padding:1px}.px-0{padding-inline:0}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.px-\[6px\]{padding-inline:6px}.py-0{padding-block:0}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-\[3px\]{padding-block:3px}.pt-0{padding-top:0}.pt-1{padding-top:var(--spacing)}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-0{padding-right:0}.pr-1{padding-right:var(--spacing)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pr-7{padding-right:calc(var(--spacing) * 7)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-0{padding-bottom:0}.pb-0\.5{padding-bottom:calc(var(--spacing) * .5)}.pb-1{padding-bottom:var(--spacing)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pl-0{padding-left:0}.pl-1\.5{padding-left:calc(var(--spacing) * 1.5)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-7{padding-left:calc(var(--spacing) * 7)}.pl-8{padding-left:calc(var(--spacing) * 8)}.text-center{text-align:center}.text-end{text-align:end}.text-justify{text-align:justify}.text-left{text-align:left}.text-right{text-align:right}.text-start{text-align:start}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.text-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--line-height))}.text-8xl{font-size:var(--text-8xl);line-height:var(--tw-leading,var(--text-8xl--line-height))}.text-9xl{font-size:var(--text-9xl);line-height:var(--tw-leading,var(--text-9xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[2em\]{font-size:2em}.text-\[6px\]{font-size:6px}.text-\[7px\]{font-size:7px}.text-\[8px\]{font-size:8px}.text-\[9\.5px\]{font-size:9.5px}.text-\[9px\]{font-size:9px}.text-\[10\.5px\]{font-size:10.5px}.text-\[10px\]{font-size:10px}.text-\[11\.5px\]{font-size:11.5px}.text-\[11px\]{font-size:11px}.text-\[12\.5px\]{font-size:12.5px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[32px\]{font-size:32px}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-extralight{--tw-font-weight:var(--font-weight-extralight);font-weight:var(--font-weight-extralight)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.font-thin{--tw-font-weight:var(--font-weight-thin);font-weight:var(--font-weight-thin)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-normal{overflow-wrap:normal;word-break:normal}.break-all{word-break:break-all}.break-keep{word-break:keep-all}.text-clip{text-overflow:clip}.text-ellipsis{text-overflow:ellipsis}.whitespace-break-spaces{white-space:break-spaces}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#0d99ff\]{color:#0d99ff}.text-\[\#4fb8ff\]{color:#4fb8ff}.text-\[\#7cc4ff\]{color:#7cc4ff}.text-\[hsl\(\.\.\.\)\]{color:hsl(...)}.text-\[rgb\(\)\]{color:rgb()}.text-\[数値\]{color:数値}.text-amber-400{color:var(--color-amber-400)}.text-amber-400\/90{color:#fcbb00e6}@supports (color:color-mix(in lab, red, red)){.text-amber-400\/90{color:color-mix(in oklab, var(--color-amber-400) 90%, transparent)}}.text-amber-600{color:var(--color-amber-600)}.text-black{color:var(--color-black)}.text-blue-100{color:var(--color-blue-100)}.text-blue-200{color:var(--color-blue-200)}.text-blue-500{color:var(--color-blue-500)}.text-blue-700{color:var(--color-blue-700)}.text-card-foreground{color:var(--color-card-foreground)}.text-current{color:currentColor}.text-destructive-foreground{color:var(--color-destructive-foreground)}.text-foreground{color:var(--color-foreground)}.text-gray-100{color:var(--color-gray-100)}.text-gray-200{color:var(--color-gray-200)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-green-400{color:var(--color-green-400)}.text-inherit{color:inherit}.text-muted{color:var(--color-muted)}.text-muted-foreground{color:var(--color-muted-foreground)}.text-popover-foreground{color:var(--color-popover-foreground)}.text-primary{color:var(--color-primary)}.text-primary-foreground{color:var(--color-primary-foreground)}.text-purple-200{color:var(--color-purple-200)}.text-purple-300{color:var(--color-purple-300)}.text-purple-400{color:var(--color-purple-400)}.text-purple-600{color:var(--color-purple-600)}.text-red-300{color:var(--color-red-300)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-secondary-foreground{color:var(--color-secondary-foreground)}.text-sky-400{color:var(--color-sky-400)}.text-transparent{color:#0000}.text-white{color:var(--color-white)}.text-white\/85{color:#ffffffd9}@supports (color:color-mix(in lab, red, red)){.text-white\/85{color:color-mix(in oklab, var(--color-white) 85%, transparent)}}.text-yellow-400{color:var(--color-yellow-400)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.accent-\[\#0F6CBD\]{accent-color:#0f6cbd}.opacity-0{opacity:0}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-100{opacity:1}.bg-blend-color{background-blend-mode:color}.bg-blend-color-burn{background-blend-mode:color-burn}.bg-blend-color-dodge{background-blend-mode:color-dodge}.bg-blend-darken{background-blend-mode:darken}.bg-blend-difference{background-blend-mode:difference}.bg-blend-exclusion{background-blend-mode:exclusion}.bg-blend-hard-light{background-blend-mode:hard-light}.bg-blend-hue{background-blend-mode:hue}.bg-blend-lighten{background-blend-mode:lighten}.bg-blend-luminosity{background-blend-mode:luminosity}.bg-blend-multiply{background-blend-mode:multiply}.bg-blend-normal{background-blend-mode:normal}.bg-blend-overlay{background-blend-mode:overlay}.bg-blend-saturation{background-blend-mode:saturation}.bg-blend-screen{background-blend-mode:screen}.bg-blend-soft-light{background-blend-mode:soft-light}.mix-blend-color{mix-blend-mode:color}.mix-blend-color-burn{mix-blend-mode:color-burn}.mix-blend-color-dodge{mix-blend-mode:color-dodge}.mix-blend-darken{mix-blend-mode:darken}.mix-blend-difference{mix-blend-mode:difference}.mix-blend-exclusion{mix-blend-mode:exclusion}.mix-blend-hard-light{mix-blend-mode:hard-light}.mix-blend-hue{mix-blend-mode:hue}.mix-blend-lighten{mix-blend-mode:lighten}.mix-blend-luminosity{mix-blend-mode:luminosity}.mix-blend-multiply{mix-blend-mode:multiply}.mix-blend-normal{mix-blend-mode:normal}.mix-blend-overlay{mix-blend-mode:overlay}.mix-blend-plus-darker{mix-blend-mode:plus-darker}.mix-blend-plus-lighter{mix-blend-mode:plus-lighter}.mix-blend-saturation{mix-blend-mode:saturation}.mix-blend-screen{mix-blend-mode:screen}.mix-blend-soft-light{mix-blend-mode:soft-light}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-\[\#0d99ff\]{--tw-ring-color:#0d99ff}.ring-\[\#0d99ff\]\/50{--tw-ring-color:oklab(66.9841% -.0648249 -.170866/.5)}.ring-offset-background{--tw-ring-offset-color:var(--color-background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a)) drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a) drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-md{--tw-drop-shadow-size:drop-shadow(0 3px 3px var(--tw-drop-shadow-color,#0000001f));--tw-drop-shadow:drop-shadow(var(--drop-shadow-md));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.sepia{--tw-sepia:sepia(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{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,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-all{-webkit-user-select:all;user-select:all}.select-auto{-webkit-user-select:auto;user-select:auto}.select-none{-webkit-user-select:none;user-select:none}.select-text{-webkit-user-select:text;user-select:text}.ring-inset{--tw-ring-inset:inset}.group-focus-within\:opacity-100:is(:where(.group):focus-within *){opacity:1}@media (hover:hover){.group-hover\:scale-\[1\.04\]:is(:where(.group):hover *){scale:1.04}.group-hover\:text-white:is(:where(.group):hover *){color:var(--color-white)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.group-hover\/fill\:block:is(:where(.group\/fill):hover *){display:block}.group-hover\/var-input\:opacity-100:is(:where(.group\/var-input):hover *){opacity:1}}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-70:is(:where(.peer):disabled~*){opacity:.7}.selection\:bg-transparent ::selection{background-color:#0000}.selection\:bg-transparent::selection{background-color:#0000}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--color-foreground)}.placeholder\:text-gray-500::placeholder{color:var(--color-gray-500)}.placeholder\:text-gray-600::placeholder{color:var(--color-gray-600)}.placeholder\:text-muted-foreground::placeholder{color:var(--color-muted-foreground)}.focus-within\:border-\[\#0d99ff\]:focus-within{border-color:#0d99ff}.focus-within\:ring-1:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-within\:ring-\[\#0d99ff\]:focus-within{--tw-ring-color:#0d99ff}@media (hover:hover){.hover\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:border-\[\#0d99ff\]:hover{border-color:#0d99ff}.hover\:border-\[\#5d5d5d\]:hover{border-color:#5d5d5d}.hover\:border-\[\#555\]:hover{border-color:#555}.hover\:border-gray-500:hover{border-color:var(--color-gray-500)}.hover\:bg-\[\#0c8ce9\]:hover{background-color:#0c8ce9}.hover\:bg-\[\#0d99ff\]:hover{background-color:#0d99ff}.hover\:bg-\[\#0d99ff\]\/30:hover{background-color:oklab(66.9841% -.0648249 -.170866/.3)}.hover\:bg-\[\#2c2c2c\]:hover{background-color:#2c2c2c}.hover\:bg-\[\#4a4a4a\]:hover{background-color:#4a4a4a}.hover\:bg-\[\#4c4c4c\]:hover{background-color:#4c4c4c}.hover\:bg-\[\#5d5d5d\]:hover{background-color:#5d5d5d}.hover\:bg-\[\#6a6a6a\]:hover{background-color:#6a6a6a}.hover\:bg-\[\#333\]:hover{background-color:#333}.hover\:bg-\[\#353535\]:hover{background-color:#353535}.hover\:bg-\[\#383838\]:hover{background-color:#383838}.hover\:bg-\[\#444444\]:hover{background-color:#444}.hover\:bg-\[\#444444\]\/30:hover{background-color:oklab(38.6654% 0 0/.3)}.hover\:bg-\[\#444444\]\/50:hover{background-color:oklab(38.6654% 0 0/.5)}.hover\:bg-accent:hover{background-color:var(--color-accent)}.hover\:bg-blue-100:hover{background-color:var(--color-blue-100)}.hover\:bg-blue-500\/50:hover{background-color:#3080ff80}@supports (color:color-mix(in lab, red, red)){.hover\:bg-blue-500\/50:hover{background-color:color-mix(in oklab, var(--color-blue-500) 50%, transparent)}}.hover\:bg-destructive\/80:hover{background-color:#ef4444cc}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/80:hover{background-color:color-mix(in oklab, var(--color-destructive) 80%, transparent)}}.hover\:bg-destructive\/90:hover{background-color:#ef4444e6}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab, var(--color-destructive) 90%, transparent)}}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-gray-600:hover{background-color:var(--color-gray-600)}.hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}.hover\:bg-primary\/80:hover{background-color:#171717cc}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/80:hover{background-color:color-mix(in oklab, var(--color-primary) 80%, transparent)}}.hover\:bg-primary\/90:hover{background-color:#171717e6}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab, var(--color-primary) 90%, transparent)}}.hover\:bg-purple-500\/20:hover{background-color:#ac4bff33}@supports (color:color-mix(in lab, red, red)){.hover\:bg-purple-500\/20:hover{background-color:color-mix(in oklab, var(--color-purple-500) 20%, transparent)}}.hover\:bg-purple-500\/30:hover{background-color:#ac4bff4d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-purple-500\/30:hover{background-color:color-mix(in oklab, var(--color-purple-500) 30%, transparent)}}.hover\:bg-purple-700:hover{background-color:var(--color-purple-700)}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:bg-red-500\/10:hover{background-color:#fb2c361a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-red-500\/10:hover{background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)}}.hover\:bg-red-500\/20:hover{background-color:#fb2c3633}@supports (color:color-mix(in lab, red, red)){.hover\:bg-red-500\/20:hover{background-color:color-mix(in oklab, var(--color-red-500) 20%, transparent)}}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:bg-red-900\/30:hover{background-color:#82181a4d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-red-900\/30:hover{background-color:color-mix(in oklab, var(--color-red-900) 30%, transparent)}}.hover\:bg-secondary\/80:hover{background-color:#f5f5f5cc}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab, var(--color-secondary) 80%, transparent)}}.hover\:bg-transparent:hover{background-color:#0000}.hover\:bg-white\/10:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/10:hover{background-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.hover\:text-accent-foreground:hover{color:var(--color-accent-foreground)}.hover\:text-amber-300:hover{color:var(--color-amber-300)}.hover\:text-blue-400:hover{color:var(--color-blue-400)}.hover\:text-blue-600:hover{color:var(--color-blue-600)}.hover\:text-gray-100:hover{color:var(--color-gray-100)}.hover\:text-gray-200:hover{color:var(--color-gray-200)}.hover\:text-gray-300:hover{color:var(--color-gray-300)}.hover\:text-gray-600:hover{color:var(--color-gray-600)}.hover\:text-gray-700:hover{color:var(--color-gray-700)}.hover\:text-green-300:hover{color:var(--color-green-300)}.hover\:text-green-400:hover{color:var(--color-green-400)}.hover\:text-purple-300:hover{color:var(--color-purple-300)}.hover\:text-red-300:hover{color:var(--color-red-300)}.hover\:text-red-400:hover{color:var(--color-red-400)}.hover\:text-red-600:hover{color:var(--color-red-600)}.hover\:text-red-700:hover{color:var(--color-red-700)}.hover\:text-white:hover{color:var(--color-white)}.hover\:no-underline:hover{text-decoration-line:none}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}.hover\:opacity-100:hover{opacity:1}.hover\:ring-2:hover{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:ring-\[\#0d99ff\]:hover{--tw-ring-color:#0d99ff}}.focus\:border-\[\#0d99ff\]:focus{border-color:#0d99ff}.focus\:border-purple-500:focus{border-color:var(--color-purple-500)}.focus\:bg-\[\#383838\]:focus{background-color:#383838}.focus\:bg-\[\#444444\]:focus{background-color:#444}.focus\:bg-accent:focus{background-color:var(--color-accent)}.focus\:bg-gray-700:focus{background-color:var(--color-gray-700)}.focus\:bg-white\/10:focus{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.focus\:bg-white\/10:focus{background-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.focus\:text-accent-foreground:focus{color:var(--color-accent-foreground)}.focus\:text-white:focus{color:var(--color-white)}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-\[\#0d99ff\]:focus{--tw-ring-color:#0d99ff}.focus\:ring-purple-500:focus{--tw-ring-color:var(--color-purple-500)}.focus\:ring-ring:focus{--tw-ring-color:var(--color-ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:opacity-100:focus-visible{opacity:1}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-\[\#0d99ff\]:focus-visible{--tw-ring-color:#0d99ff}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--color-ring)}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-\[\#2c2c2c\]:focus-visible{--tw-ring-offset-color:#2c2c2c}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color:var(--color-background)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:text-blue-500:active{color:var(--color-blue-500)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-\[\#2a2a2a\]:disabled{background-color:#2a2a2a}.disabled\:bg-\[\#383838\]:disabled{background-color:#383838}.disabled\:bg-gray-50:disabled{background-color:var(--color-gray-50)}.disabled\:bg-gray-100:disabled{background-color:var(--color-gray-100)}.disabled\:text-gray-400:disabled{color:var(--color-gray-400)}.disabled\:text-gray-500:disabled{color:var(--color-gray-500)}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}@media (hover:hover){.disabled\:hover\:bg-transparent:disabled:hover{background-color:#0000}}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--color-muted-foreground)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=active\]\:bg-\[\#383838\][data-state=active]{background-color:#383838}.data-\[state\=active\]\:bg-\[\#444444\][data-state=active]{background-color:#444}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:var(--color-background)}.data-\[state\=active\]\:text-foreground[data-state=active]{color:var(--color-foreground)}.data-\[state\=active\]\:text-white[data-state=active]{color:var(--color-white)}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:bg-\[\#0d99ff\][data-state=checked]{background-color:#0d99ff}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--color-primary)}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:var(--color-primary-foreground)}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:var(--color-accent)}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:var(--color-accent-foreground)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--color-muted-foreground)}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:var(--color-input)}@media (min-width:40rem){.sm\:mt-0{margin-top:0}.sm\:max-w-\[600px\]{max-width:600px}.sm\:max-w-\[900px\]{max-width:900px}.sm\:flex-row{flex-direction:row}.sm\:justify-between{justify-content:space-between}.sm\:justify-end{justify-content:flex-end}:where(.sm\:space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}.sm\:rounded-lg{border-radius:var(--radius-lg)}.sm\:text-left{text-align:left}}@media (min-width:48rem){.md\:flex{display:flex}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&\:\:-webkit-inner-spin-button\]\:appearance-none::-webkit-inner-spin-button{appearance:none}.\[\&\:\:-webkit-outer-spin-button\]\:appearance-none::-webkit-outer-spin-button{appearance:none}.\[\&\>button\:last-child\]\:hidden>button:last-child{display:none}.\[\&\>span\]\:line-clamp-1>span{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{rotate:180deg}.gg-editor-skin{--ed-bg:#1e1e1e;--ed-panel:#2c2c2c;--ed-panel-raised:#2c2c2c;--ed-surface:#383838;--ed-surface-hover:#444;--ed-line:#ffffff1a;--ed-line-strong:#ffffff29;--ed-accent:#0d99ff;--ed-accent-strong:#0d99ff;--ed-accent-hover:#0c8ce9}.gg-editor-skin .bg-\[\#1e1e1e\]{background-color:var(--ed-bg)}.gg-editor-skin .bg-\[\#2c2c2c\],.gg-editor-skin .bg-\[\#2a2a2a\]{background-color:var(--ed-panel)}.gg-editor-skin .bg-\[\#383838\]{background-color:var(--ed-surface)}.gg-editor-skin .bg-\[\#444444\],.gg-editor-skin .bg-\[\#4a4a4a\],.gg-editor-skin .bg-\[\#5d5d5d\]{background-color:var(--ed-surface-hover)}.gg-editor-skin .hover\:bg-\[\#444444\]:hover,.gg-editor-skin .hover\:bg-\[\#383838\]:hover{background-color:#ffffff14}.gg-editor-skin .hover\:bg-\[\#4a4a4a\]:hover{background-color:var(--ed-surface-hover)}.gg-editor-skin .border-\[\#444444\],.gg-editor-skin .border-\[\#383838\],.gg-editor-skin .border-\[\#2c2c2c\]{border-color:var(--ed-line)}.gg-editor-skin .border-\[\#4a4a4a\],.gg-editor-skin .border-\[\#5d5d5d\]{border-color:var(--ed-line-strong)}.gg-editor-skin .hover\:border-\[\#4a4a4a\]:hover,.gg-editor-skin .hover\:border-\[\#5d5d5d\]:hover{border-color:#0d99ff99}.gg-editor-skin .w-px.bg-\[\#444444\],.gg-editor-skin .h-px.bg-\[\#444444\]{background-color:var(--ed-line)}.gg-editor-skin .bg-\[\#0d99ff\],.gg-editor-skin .bg-blue-500,.gg-editor-skin .bg-blue-600{background-color:var(--ed-accent-strong)}.gg-editor-skin .hover\:bg-\[\#0c8ce9\]:hover,.gg-editor-skin .hover\:bg-blue-600:hover,.gg-editor-skin .hover\:bg-blue-700:hover{background-color:var(--ed-accent-hover)}.gg-editor-skin .text-\[\#0d99ff\],.gg-editor-skin .text-\[\#4fb8ff\],.gg-editor-skin .text-blue-400,.gg-editor-skin .text-blue-500{color:var(--ed-accent)}.gg-editor-skin .border-\[\#0d99ff\],.gg-editor-skin .border-blue-500{border-color:var(--ed-accent)}.gg-editor-skin .ring-\[\#0d99ff\],.gg-editor-skin .ring-blue-500{--tw-ring-color:var(--ed-accent)}.gg-editor-skin .text-gray-300{color:#ffffffd9}.gg-editor-skin .text-gray-400{color:#ffffffb3}.gg-editor-skin .text-gray-500{color:#ffffff73}.gg-editor-skin .rounded{border-radius:.375rem}.gg-editor-skin .shadow-lg,.gg-editor-skin .shadow-xl,.gg-editor-skin .shadow-2xl{box-shadow:0 5px 17px #00000059,0 2px 7px #00000026}.gg-editor-skin input:focus-visible,.gg-editor-skin button:focus-visible,.gg-editor-skin select:focus-visible{outline:2px solid var(--ed-accent);outline-offset:1px}@layer gg-editor-defaults{.gg-editor-ui{text-align:left;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Hiragino Sans,Meiryo,sans-serif;font-size:12px;line-height:1.5}.gg-editor-ui,.gg-editor-ui :where(*){box-sizing:border-box;border-style:solid;border-width:0}.gg-editor-ui :where(button,input,textarea,select){font:inherit;color:inherit;margin:0}.gg-editor-ui :where(button){cursor:pointer;background:0 0}.gg-editor-ui :where(button:disabled){cursor:default}.gg-editor-ui :where(p,h1,h2,h3,h4,ul,ol){margin:0;padding:0}.gg-editor-ui :where(svg){flex-shrink:0;display:block}.gg-editor-ui :where(input,textarea){min-width:0}}.gg-editor-ui{color-scheme:light;--ed-bg:#f5f5f5;--ed-canvas:#f5f5f5;--ed-panel:#fff;--ed-panel-raised:#fff;--ed-surface:#f5f5f5;--ed-surface-hover:#e6e6e6;--ed-text:#1e1e1e;--ed-muted:#6b6b6b;--ed-line:#e6e6e6;--ed-line-strong:#b3b3b3;--ed-accent:#0d99ff;--ed-accent-strong:#0d99ff;--ed-accent-hover:#0c8ce9;--ed-accent-soft:#e5f4ff;--ed-success:#14ae5c;--ed-warning:#8f5a00;--ed-danger:#dc3412;--ed-frame-edge:#00000014;--ed-shadow:0 5px 17px #0003, 0 2px 7px #00000026;--ed-radius:6px;--ed-focus:0 0 0 2px var(--ed-panel), 0 0 0 4px var(--ed-accent);--color-background:var(--ed-panel);--color-foreground:var(--ed-text);--color-card:var(--ed-panel);--color-card-foreground:var(--ed-text);--color-popover:var(--ed-panel-raised);--color-popover-foreground:var(--ed-text);--color-primary:var(--ed-accent-strong);--color-primary-foreground:#fff;--color-secondary:var(--ed-surface);--color-secondary-foreground:var(--ed-text);--color-muted:var(--ed-surface);--color-muted-foreground:var(--ed-muted);--color-accent:var(--ed-surface-hover);--color-accent-foreground:var(--ed-text);--color-border:var(--ed-line);--color-input:var(--ed-line-strong);--color-ring:var(--ed-accent);--color-destructive:var(--ed-danger);color:var(--ed-text);accent-color:var(--ed-accent-strong);scrollbar-color:var(--ed-line-strong) transparent}.gg-editor-ui[data-editor-theme=dark]{color-scheme:dark;--ed-bg:#1e1e1e;--ed-canvas:#1e1e1e;--ed-panel:#2c2c2c;--ed-panel-raised:#333;--ed-surface:#383838;--ed-surface-hover:#444;--ed-text:#fff;--ed-muted:#b3b3b3;--ed-line:#444;--ed-line-strong:#5c5c5c;--ed-accent:#4fb8ff;--ed-accent-strong:#0d99ff;--ed-accent-hover:#0c8ce9;--ed-accent-soft:#244761;--ed-success:#85e0a3;--ed-warning:#ffcd29;--ed-danger:#fca397;--ed-frame-edge:#ffffff1f;--ed-shadow:0 5px 17px #00000073, 0 2px 7px #0000004d}.gg-editor-ui :is(.text-white,.text-gray-100,.text-gray-200,.text-gray-300):not([data-editor-preview] *){color:var(--ed-text)}.gg-editor-ui :is(.text-gray-400,.text-gray-500,.text-gray-600):not([data-editor-preview] *){color:var(--ed-muted)}.gg-editor-ui :is(.hover\:text-white:hover,.hover\:text-gray-200:hover):not([data-editor-preview] *){color:var(--ed-text)}.gg-editor-ui :is(.hover\:bg-\[\#444444\]:hover,.hover\:bg-\[\#383838\]:hover,.hover\:bg-white\/10:hover):not([data-editor-preview] *){background-color:var(--ed-surface-hover)}.gg-editor-ui :is(.text-sky-400,.text-\[\#7cc4ff\]):not([data-editor-preview] *){color:var(--ed-accent)}.gg-editor-ui :is(.text-red-400,.text-red-500):not([data-editor-preview] *){color:var(--ed-danger)}.gg-editor-ui :is(.bg-blue-500,.bg-blue-600,.bg-\[\#0d99ff\],.bg-green-600,.bg-purple-600,.bg-red-500,.bg-black\/90).text-white,.gg-editor-ui :is(.bg-blue-500,.bg-blue-600,.bg-\[\#0d99ff\],.bg-green-600,.bg-purple-600,.bg-red-500,.bg-black\/90) .text-white:not([data-editor-preview] *){color:#fff}.gg-editor-ui :is(.bg-\[\#0d99ff\]\/20,.bg-\[\#0d99ff\]\/15,.bg-\[\#0d99ff\]\/30):not([data-editor-preview] *){background-color:var(--ed-accent-soft)}.gg-editor-ui :is(.bg-white\/15,.bg-white\/10):not([data-editor-preview] *){background-color:var(--ed-line)}.gg-editor-ui :is(.shadow-lg,.shadow-xl,.shadow-2xl):not([data-editor-preview] *){box-shadow:var(--ed-shadow)}.gg-editor-ui :is([class*="text-[6px]"],[class*="text-[7px]"],[class*="text-[8px]"],[class*="text-[9px]"],[class*="text-[9.5px]"],[class*="text-[10px]"],[class*="text-[10.5px]"],[class*="text-[11px]"],[class*="text-[11.5px]"]):not([data-editor-preview] *){font-size:12px}.gg-editor-ui :is(button,input,select,textarea,a,[tabindex]):focus-visible{outline:2px solid var(--ed-accent);outline-offset:2px;box-shadow:none}.gg-editor-ui :is(input,textarea):not([data-editor-preview] *)::placeholder{color:var(--ed-muted);opacity:1}.gg-editor-ui .ed-icon-button,.gg-editor-ui .ed-button{border:1px solid var(--ed-line);border-radius:var(--ed-radius);height:36px;color:var(--ed-text);background:var(--ed-panel);white-space:nowrap;flex-shrink:0;justify-content:center;align-items:center;gap:8px;padding:0 12px;font-size:13px;font-weight:500;display:inline-flex}.gg-editor-ui .ed-icon-button{background:0 0;border-color:#0000;width:32px;height:32px;padding:0}.gg-editor-ui :is(.ed-button,.ed-icon-button):hover:not([data-editor-preview] *){background:var(--ed-surface-hover)}.gg-editor-ui :is(.ed-button,.ed-icon-button)[aria-pressed=true]:not([data-editor-preview] *){background:var(--ed-accent-soft);color:var(--ed-accent);border-color:var(--ed-accent)}.gg-editor-ui .ed-button-primary{background:var(--ed-accent-strong);color:#fff;border-color:#0000}.gg-editor-ui .ed-button-primary:hover{background:var(--ed-accent-hover)}.gg-editor-ui button:disabled{opacity:.45}.gg-editor-ui [data-editor-topbar]{gap:12px;height:56px;padding-inline:16px}.gg-editor-ui [data-topbar=title]{font-size:14px}.gg-editor-ui .ed-save-status{white-space:nowrap;color:var(--ed-muted);align-items:center;gap:8px;font-size:12px;display:inline-flex}.gg-editor-ui .ed-save-status[data-save-status=dirty]{color:var(--ed-warning)}.gg-editor-ui .ed-save-status[data-save-status=error]{color:var(--ed-danger)}.gg-editor-ui .ed-save-status[data-save-status=saved] svg{color:var(--ed-success)}.gg-editor-ui .ed-collab-presence{align-items:center;gap:10px;display:inline-flex}.gg-editor-ui .ed-collab-avatars{align-items:center;padding-left:4px;display:inline-flex}.gg-editor-ui .ed-collab-avatar{border:2px solid var(--ed-panel);color:#fff;cursor:pointer;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:26px;margin-left:-4px;padding:0;font-size:11px;font-weight:700;line-height:1;display:inline-flex}.gg-editor-ui .ed-collab-avatar:hover{transform:translateY(-1px)}.gg-editor-ui .ed-collab-avatar-self{cursor:default;box-shadow:0 0 0 1px var(--ed-line-strong);margin-left:4px}.gg-editor-ui .ed-collab-avatar-self:hover,.gg-editor-ui .ed-collab-avatar-more:hover{transform:none}.gg-editor-ui .ed-collab-avatar-more{background:var(--ed-panel-raised);color:var(--ed-text);cursor:default}.gg-editor-ui .ed-collab-bridge{white-space:nowrap;color:var(--ed-muted);align-items:center;gap:4px;font-size:12px;display:inline-flex}.gg-editor-ui .ed-collab-bridge-warn{color:var(--ed-warning)}.gg-editor-ui .ed-collab-bridge-alert{color:#fff;background:var(--ed-danger);border-radius:var(--ed-radius);padding:3px 8px;font-weight:600}.gg-editor-ui .ed-save-status[data-collab-status=synced] svg{color:var(--ed-success)}.gg-editor-ui .ed-save-status[data-collab-status=offline]{color:var(--ed-danger)}.gg-editor-ui .ed-save-status[data-collab-status=error]{color:var(--ed-danger);font-weight:600}.gg-editor-ui .ed-save-status[data-collab-pending]{color:var(--ed-warning)}.gg-editor-ui .ed-collab-dots{flex-shrink:0;align-items:center;gap:2px;display:inline-flex}.gg-editor-ui .ed-collab-dot{width:7px;height:7px;box-shadow:0 0 0 1px var(--ed-panel);border-radius:50%}.gg-editor-ui .ed-panel-heading{border-bottom:1px solid var(--ed-line);flex-shrink:0;align-items:center;gap:8px;height:48px;padding:0 16px;font-size:14px;font-weight:600;display:flex}.gg-editor-ui .ed-toolbar{border:1px solid var(--ed-line);background:var(--ed-panel-raised);color:var(--ed-text);box-shadow:var(--ed-shadow);border-radius:12px;padding:8px}.gg-editor-ui .ed-footer{border-top:1px solid var(--ed-line);background:var(--ed-panel);height:36px;color:var(--ed-muted);flex-shrink:0;justify-content:space-between;align-items:center;gap:16px;padding:0 16px;font-size:12px;display:flex}.gg-editor-ui .ed-footer-hint{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.gg-editor-ui .ed-empty{color:var(--ed-muted);flex-direction:column;align-items:flex-start;gap:12px;padding:24px;font-size:13px;line-height:1.7;display:flex}.gg-editor-ui .ed-empty strong{color:var(--ed-text);font-size:14px}@media (prefers-reduced-motion:reduce){.gg-editor-ui *,.gg-editor-ui :before,.gg-editor-ui :after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}.gg-editor-ui .ed-panel-tabs{border-bottom:1px solid var(--ed-line);background:var(--ed-panel);border-radius:0;flex-shrink:0;gap:4px;width:100%;height:48px;padding:8px;display:flex}.gg-editor-ui .ed-panel-tabs>button{flex:1;height:32px;font-size:12px}.gg-editor-ui .ed-panel-tabs>[data-state=active]{background:var(--ed-accent-soft);color:var(--ed-accent);box-shadow:none}.gg-editor-ui .ed-panel-tab-content{flex:1;min-height:0;margin:0;display:flex}.gg-editor-ui .ed-panel-tab-content[data-state=inactive]{display:none}.gg-editor-ui .ed-resize-handle{background-color:#0000;width:6px}.gg-editor-ui .ed-resize-handle:hover,.gg-editor-ui .ed-resize-handle:focus-visible{background-color:var(--ed-accent)}.gg-editor-ui .ed-layer-selected{box-shadow:inset 3px 0 var(--ed-accent)}.gg-editor-ui .ed-layer-selected :is(.text-white,.text-blue-100,.text-blue-200){color:var(--ed-accent)}.gg-editor-ui [data-property-panel] .ed-panel-heading{z-index:1;position:sticky;top:0}.gg-editor-ui [data-property-panel] .p-3{padding:0}.gg-editor-ui [data-property-panel] .p-3>*{padding-left:16px;padding-right:16px}.gg-editor-ui [data-property-panel] .p-3>.mb-3{min-height:44px;margin-bottom:0}.gg-editor-ui [data-property-panel] .p-3>[data-state]{border-top:1px solid var(--ed-line)}.gg-editor-ui [data-property-panel] .p-3>.ed-part-card{margin:0 16px 12px;padding:10px 12px}.gg-editor-ui [data-property-panel] [data-state]>button[data-state]{min-height:40px;color:var(--ed-text);border-top:0;border-radius:0;padding:0;font-size:13px;font-weight:600}.gg-editor-ui [data-property-panel] [data-state]>button[data-state]:hover{color:var(--ed-text);background:0 0}.gg-editor-ui [data-property-panel] [data-state]>button[data-state]>span:first-child>svg,.gg-editor-ui [data-property-panel] [data-state]>button[data-state]>svg:last-child{width:14px;height:14px;color:var(--ed-muted)}.gg-editor-ui [data-property-panel] [data-state]>div[data-state=open]{padding-bottom:16px}.gg-editor-ui [data-property-panel] label,.gg-editor-ui [data-property-panel] .ed-prop-label{color:var(--ed-muted);font-size:11px;font-weight:500;line-height:1.4}.gg-editor-ui [data-property-panel] :is(input:not([type=color]):not([type=checkbox]):not([type=range]),select,[role=combobox]):not(.group *){background:var(--ed-surface);height:32px;min-height:32px;color:var(--ed-text);box-shadow:none;border-radius:6px;padding-left:8px;padding-right:8px;font-size:12px;border:1px solid #0000!important}.gg-editor-ui [data-property-panel] :is(input:not([type=color]):not([type=checkbox]):not([type=range]),select,[role=combobox]):not(.group *):hover{border-color:var(--ed-line-strong)!important}.gg-editor-ui [data-property-panel] :is(input:not([type=color]):not([type=checkbox]):not([type=range]),select,[role=combobox]):not(.group *):focus-visible,.gg-editor-ui [data-property-panel] :is(input:not([type=color]):not([type=checkbox]):not([type=range]),select,[role=combobox]):not(.group *):focus-within{box-shadow:none;outline:none;border-color:var(--ed-accent)!important}.gg-editor-ui [data-property-panel] .group.h-5{background:var(--ed-surface);border-color:#0000;border-radius:6px;min-width:40px;height:28px}.gg-editor-ui [data-property-panel] .group.h-5:hover{border-color:var(--ed-line-strong)}.gg-editor-ui [data-property-panel] .group.h-5:focus-within{border-color:var(--ed-accent)}.gg-editor-ui [data-property-panel] .group.h-5 input{color:var(--ed-text);font-size:12px}.gg-editor-ui [data-property-panel] .group.h-5 input:focus{box-shadow:none}.gg-editor-ui [data-property-panel] button.h-7.w-7,.gg-editor-ui [data-property-panel] button.h-7{border-radius:6px;min-width:32px;height:32px}.gg-editor-ui [data-property-panel] button.h-7.w-7 svg{width:14px;height:14px}.gg-editor-ui [data-property-panel] button[data-state]:not([role=checkbox]):not([role=switch]){min-height:32px}.gg-editor-ui [data-property-panel] button[role=checkbox]{border:1px solid var(--ed-line-strong);background:var(--ed-surface);border-radius:4px;width:16px;height:16px;min-height:16px}.gg-editor-ui [data-property-panel] button[role=checkbox][data-state=checked]{background:var(--ed-accent-strong);border-color:var(--ed-accent-strong);color:#fff}.gg-editor-ui [data-property-panel] input[type=color]{border:1px solid var(--ed-line-strong);border-radius:6px;width:28px;height:28px;padding:0}.gg-editor-ui [data-property-panel] .grid.grid-cols-2{gap:8px}.gg-editor-ui [data-property-panel] .space-y-2>*+*,.gg-editor-ui [data-property-panel] .space-y-3>*+*{margin-top:10px}.gg-editor-ui[data-editor-surface=popup],.gg-editor-ui[data-editor-surface=dialog],.gg-editor-ui[data-editor-surface=tooltip]{color:var(--ed-text);background-color:var(--ed-panel-raised);border-color:var(--ed-line);box-shadow:var(--ed-shadow);z-index:10000;border-radius:12px}.gg-editor-ui[data-editor-surface=popup]{max-width:calc(100vw - 24px)}.gg-editor-ui[data-editor-surface=dialog]{max-width:min(var(--container-7xl,80rem), calc(100vw - 48px));border-radius:16px;max-height:calc(100dvh - 48px);overflow-y:auto}.gg-editor-ui[data-editor-surface=dialog].max-w-lg{max-width:min(32rem,100vw - 48px)}.gg-editor-ui[data-editor-surface=overlay]{z-index:9999;background:#10182766}.gg-editor-ui[data-editor-surface=tooltip]{border:1px solid var(--ed-line);font-size:12px}.gg-editor-ui [role=menuitem],.gg-editor-ui [role=menuitemcheckbox],.gg-editor-ui [role=menuitemradio]{min-height:32px;font-size:13px}.gg-editor-ui :is([role=menuitem],[role=menuitemcheckbox],[role=menuitemradio],[role=option])[data-highlighted]:not([data-editor-preview] *){background-color:var(--ed-accent-soft);color:var(--ed-accent)}.gg-editor-ui[data-editor-surface=dialog]>button:last-child{justify-content:center;align-items:center;min-width:28px;min-height:28px;display:flex}.gg-editor-ui .ed-comments-panel{background:var(--ed-surface)}.gg-editor-ui .ed-comment-thread p{overflow-wrap:anywhere}.gg-editor-ui .ed-comment-thread button{min-height:28px}.gg-editor-ui .ed-comments-panel textarea{border-radius:8px;min-height:88px;padding:12px;line-height:1.6}.gg-editor-ui .ed-comment-thread>div:first-child>button{min-width:28px}.gg-editor-ui .ed-ribbon [role=tab]{height:40px;padding-inline:12px;font-size:13px}.gg-editor-ui .ed-ribbon [role=tabpanel]{gap:4px;padding-inline:16px}.gg-editor-ui .ed-ribbon [role=tabpanel] button,.gg-editor-ui .ed-ribbon [role=tabpanel] input:not([type=color]),.gg-editor-ui .ed-ribbon [role=tabpanel] select{min-height:28px}.gg-editor-ui .ed-ribbon [role=tab][data-state=active]{color:var(--ed-accent)}.gg-editor-ui :is(input:not([type=color]),textarea,select):not([data-editor-preview] *){border-color:var(--ed-line-strong)!important}.gg-editor-ui .ed-frame-shell{background:#fff}.gg-editor-ui .ed-frame-label-row{align-items:center;gap:2px;max-width:100%;height:20px;display:inline-flex;position:absolute;left:0}.gg-editor-ui .ed-frame-label{white-space:nowrap;min-width:0;height:20px;color:var(--ed-muted);pointer-events:auto;cursor:pointer;text-overflow:ellipsis;border-radius:4px;align-items:center;gap:6px;padding:0 6px 0 4px;font-size:11px;line-height:1;display:inline-flex;overflow:hidden}.gg-editor-ui .ed-frame-label-link{width:18px;height:18px;color:var(--ed-muted);pointer-events:auto;opacity:0;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;transition:opacity .12s;display:inline-flex}.gg-editor-ui .ed-frame-label-link svg{width:12px;height:12px}.gg-editor-ui .ed-frame-label-row:hover .ed-frame-label-link,.gg-editor-ui .ed-frame-label-active+.ed-frame-label-link,.gg-editor-ui .ed-frame-label-link:focus-visible{opacity:1}.gg-editor-ui .ed-frame-label-link:hover{color:var(--ed-text);background:var(--ed-panel);box-shadow:0 0 0 1px var(--ed-line)}.gg-editor-ui .ed-part-card{border:1px solid #7b61ff}@supports (color:color-mix(in lab, red, red)){.gg-editor-ui .ed-part-card{border:1px solid color-mix(in srgb, #7b61ff 45%, var(--ed-line))}}.gg-editor-ui .ed-part-card{background:#7b61ff}@supports (color:color-mix(in lab, red, red)){.gg-editor-ui .ed-part-card{background:color-mix(in srgb, #7b61ff 8%, var(--ed-panel))}}.gg-editor-ui .ed-part-card{color:var(--ed-text)}.gg-editor-ui .ed-part-accent{color:#7b61ff}.gg-editor-ui[data-editor-theme=dark] .ed-part-accent{color:#a99cff}.gg-editor-ui .ed-part-note{color:var(--ed-muted)}.gg-editor-ui .ed-frame-label:hover{color:var(--ed-text);background:var(--ed-panel);box-shadow:0 0 0 1px var(--ed-line)}.gg-editor-ui .ed-frame-label-active,.gg-editor-ui .ed-frame-label-active:hover{color:var(--ed-accent);font-weight:600}.gg-editor-ui .ed-frame-label-index{font-variant-numeric:tabular-nums;opacity:.7}.gg-editor-ui .ed-frame-label-title{text-overflow:ellipsis;overflow:hidden}.gg-editor-ui .ed-frame-label-dirty{background:var(--ed-warning);border-radius:50%;flex-shrink:0;width:6px;height:6px}.gg-editor-ui .ed-frame-label-loading{border:1.5px solid var(--ed-line-strong);border-top-color:var(--ed-accent);border-radius:50%;flex-shrink:0;width:9px;height:9px;animation:.8s linear infinite ed-spin}@keyframes ed-spin{to{transform:rotate(360deg)}}.gg-editor-ui .ed-frame-ring{pointer-events:none;border-radius:1px;position:absolute;top:0;left:0}.gg-editor-ui .ed-canvas-marquee{z-index:20;pointer-events:none;border:1px solid var(--ed-accent);background:var(--ed-accent);position:absolute}@supports (color:color-mix(in lab, red, red)){.gg-editor-ui .ed-canvas-marquee{background:color-mix(in srgb, var(--ed-accent) 12%, transparent)}}.gg-editor-ui .ed-frame-ring-active{box-shadow:0 0 0 1.5px var(--ed-accent-strong)}.gg-editor-ui .ed-frame-ring-hover{box-shadow:0 0 0 1px var(--ed-accent-strong);opacity:.55}.gg-editor-ui [data-canvas-preview-image="1"] [data-page-preview][data-image-ready="1"] iframe{visibility:hidden}.gg-editor-ui .ed-frame-skeleton{background:#fff;flex-direction:column;gap:3%;padding:6% 8%;display:flex;position:absolute;inset:0}.gg-editor-ui .ed-frame-skeleton-bar{background:#eceff3;border-radius:999px;height:2.5%;min-height:8px;display:block}.gg-editor-ui .ed-frame-skeleton-note{color:#9aa3b2;font-size:40px}.gg-editor-ui [data-canvas-rulers] canvas{display:block}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@keyframes spin{to{transform:rotate(360deg)}}
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-space-x-reverse:0}}}:root,:host{--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-900:oklch(39.6% .141 25.723);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-sky-400:oklch(74.6% .16 232.661);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-purple-200:oklch(90.2% .063 306.703);--color-purple-300:oklch(82.7% .119 306.383);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-600:oklch(55.8% .288 302.321);--color-purple-700:oklch(49.6% .265 301.924);--color-purple-900:oklch(38.1% .176 304.987);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-lg:32rem;--container-2xl:42rem;--container-3xl:48rem;--container-6xl:72rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-6xl:3.75rem;--text-6xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--text-8xl:6rem;--text-8xl--line-height:1;--text-9xl:8rem;--text-9xl--line-height:1;--font-weight-thin:100;--font-weight-extralight:200;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--font-weight-black:900;--tracking-tight:-.025em;--tracking-widest:.1em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--leading-loose:2;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--shadow-sm:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--shadow-md:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--drop-shadow-md:0 3px 3px #0000001f;--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--blur-sm:8px;--aspect-video:16 / 9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--radius:.5rem;--color-background:#fff;--color-foreground:#0a0a0a;--color-card:#fff;--color-card-foreground:#0a0a0a;--color-popover:#fff;--color-popover-foreground:#0a0a0a;--color-primary:#171717;--color-primary-foreground:#fafafa;--color-secondary:#f5f5f5;--color-secondary-foreground:#171717;--color-muted:#f5f5f5;--color-muted-foreground:#737373;--color-accent:#f5f5f5;--color-accent-foreground:#171717;--color-destructive:#ef4444;--color-destructive-foreground:#fafafa;--color-border:#e5e5e5;--color-input:#e5e5e5;--color-ring:#0a0a0a;--color-gg-green:#316a40;--color-ink:#2e2e2e;--color-mark-green:#cfe6d6}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-auto{inset:auto}.inset-x-2{inset-inline:calc(var(--spacing) * 2)}.top-0{top:0}.top-1{top:var(--spacing)}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-4{top:calc(var(--spacing) * 4)}.top-\[50\%\]{top:50%}.top-auto{top:auto}.top-full{top:100%}.right-0{right:0}.right-1{right:var(--spacing)}.right-1\.5{right:calc(var(--spacing) * 1.5)}.right-1\/2{right:50%}.right-2{right:calc(var(--spacing) * 2)}.right-4{right:calc(var(--spacing) * 4)}.right-8{right:calc(var(--spacing) * 8)}.right-\[24px\]{right:24px}.right-auto{right:auto}.right-full{right:100%}.bottom-0{bottom:0}.bottom-0\.5{bottom:calc(var(--spacing) * .5)}.bottom-1{bottom:var(--spacing)}.bottom-1\/2{bottom:50%}.bottom-5{bottom:calc(var(--spacing) * 5)}.bottom-8{bottom:calc(var(--spacing) * 8)}.bottom-16{bottom:calc(var(--spacing) * 16)}.bottom-20{bottom:calc(var(--spacing) * 20)}.bottom-\[24px\]{bottom:24px}.bottom-auto{bottom:auto}.bottom-full{bottom:100%}.left-0{left:0}.left-1{left:var(--spacing)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-2\.5{left:calc(var(--spacing) * 2.5)}.left-4{left:calc(var(--spacing) * 4)}.left-\[36px\]{left:36px}.left-\[50\%\]{left:50%}.left-\[96px\]{left:96px}.left-\[142px\]{left:142px}.left-auto{left:auto}.left-full{left:100%}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.z-\[70\]{z-index:70}.z-\[100\]{z-index:100}.z-\[1000\]{z-index:1000}.z-\[9999\]{z-index:9999}.z-auto{z-index:auto}.-order-1{order:calc(1 * -1)}.order-1{order:1}.order-2{order:2}.order-first{order:-9999}.order-last{order:9999}.order-none{order:0}.col-span-7{grid-column:span 7/span 7}.\!container{width:100%!important}@media (min-width:40rem){.\!container{max-width:40rem!important}}@media (min-width:48rem){.\!container{max-width:48rem!important}}@media (min-width:64rem){.\!container{max-width:64rem!important}}@media (min-width:80rem){.\!container{max-width:80rem!important}}@media (min-width:96rem){.\!container{max-width:96rem!important}}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.-m-0\.5{margin:calc(var(--spacing) * -.5)}.m-0{margin:0}.m-3{margin:calc(var(--spacing) * 3)}.m-auto{margin:auto}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-6{margin-inline:calc(var(--spacing) * -6)}.mx-0\.5{margin-inline:calc(var(--spacing) * .5)}.mx-1{margin-inline:var(--spacing)}.mx-1\.5{margin-inline:calc(var(--spacing) * 1.5)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-auto{margin-inline:auto}.my-1{margin-block:var(--spacing)}.my-2{margin-block:calc(var(--spacing) * 2)}.mt-0{margin-top:0}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-12{margin-top:calc(var(--spacing) * 12)}.mt-\[10px\]{margin-top:10px}.mt-\[22px\]{margin-top:22px}.mt-auto{margin-top:auto}.mt-px{margin-top:1px}.mr-0{margin-right:0}.mr-0\.5{margin-right:calc(var(--spacing) * .5)}.mr-1{margin-right:var(--spacing)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-auto{margin-right:auto}.mb-0{margin-bottom:0}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:var(--spacing)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-auto{margin-bottom:auto}.ml-0{margin-left:0}.ml-1{margin-left:var(--spacing)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.list-item{display:list-item}.table{display:table}.aspect-\[4\/3\]{aspect-ratio:4/3}.aspect-auto{aspect-ratio:auto}.aspect-square{aspect-ratio:1}.aspect-video{aspect-ratio:var(--aspect-video)}.\!h-5{height:calc(var(--spacing) * 5)!important}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1{height:var(--spacing)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-1\/2{height:50%}.h-1\/3{height:33.3333%}.h-1\/4{height:25%}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-2\/3{height:66.6667%}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-3\/4{height:75%}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-24{height:calc(var(--spacing) * 24)}.h-32{height:calc(var(--spacing) * 32)}.h-40{height:calc(var(--spacing) * 40)}.h-48{height:calc(var(--spacing) * 48)}.h-64{height:calc(var(--spacing) * 64)}.h-96{height:calc(var(--spacing) * 96)}.h-\[1px\]{height:1px}.h-\[2\.5px\]{height:2.5px}.h-\[3px\]{height:3px}.h-\[4px\]{height:4px}.h-\[22px\]{height:22px}.h-\[26px\]{height:26px}.h-\[30px\]{height:30px}.h-\[56px\]{height:56px}.h-\[58px\]{height:58px}.h-\[64px\]{height:64px}.h-\[72px\]{height:72px}.h-\[82vh\]{height:82vh}.h-\[90vh\]{height:90vh}.h-\[96px\]{height:96px}.h-\[104px\]{height:104px}.h-\[240px\]{height:240px}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-dvh{height:100dvh}.h-fit{height:fit-content}.h-full{height:100%}.h-max{height:max-content}.h-min{height:min-content}.h-px{height:1px}.h-screen{height:100vh}.max-h-24{max-height:calc(var(--spacing) * 24)}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-\[--radix-context-menu-content-available-height\]{max-height:--radix-context-menu-content-available-height}.max-h-\[--radix-select-content-available-height\]{max-height:--radix-select-content-available-height}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[240px\]{max-height:240px}.max-h-\[300px\]{max-height:300px}.max-h-\[420px\]{max-height:420px}.max-h-\[860px\]{max-height:860px}.max-h-\[var\(--radix-dropdown-menu-content-available-height\)\]{max-height:var(--radix-dropdown-menu-content-available-height)}.max-h-dvh{max-height:100dvh}.max-h-fit{max-height:fit-content}.max-h-full{max-height:100%}.max-h-max{max-height:max-content}.max-h-min{max-height:min-content}.max-h-none{max-height:none}.max-h-screen{max-height:100vh}.min-h-0{min-height:0}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-\[40px\]{min-height:40px}.min-h-\[44px\]{min-height:44px}.min-h-\[52px\]{min-height:52px}.min-h-\[60px\]{min-height:60px}.min-h-\[80px\]{min-height:80px}.min-h-\[100px\]{min-height:100px}.min-h-\[150px\]{min-height:150px}.min-h-dvh{min-height:100dvh}.min-h-fit{min-height:fit-content}.min-h-full{min-height:100%}.min-h-max{min-height:max-content}.min-h-min{min-height:min-content}.min-h-screen{min-height:100vh}.\!w-5{width:calc(var(--spacing) * 5)!important}.w-0\.5{width:calc(var(--spacing) * .5)}.w-1{width:var(--spacing)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-1\/2{width:50%}.w-1\/3{width:33.3333%}.w-1\/4{width:25%}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-2\/3{width:66.6667%}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-32{width:calc(var(--spacing) * 32)}.w-48{width:calc(var(--spacing) * 48)}.w-52{width:calc(var(--spacing) * 52)}.w-56{width:calc(var(--spacing) * 56)}.w-60{width:calc(var(--spacing) * 60)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-\[1px\]{width:1px}.w-\[16px\]{width:16px}.w-\[22px\]{width:22px}.w-\[38px\]{width:38px}.w-\[52px\]{width:52px}.w-\[54px\]{width:54px}.w-\[56px\]{width:56px}.w-\[62px\]{width:62px}.w-\[64px\]{width:64px}.w-\[68px\]{width:68px}.w-\[72px\]{width:72px}.w-\[90vw\]{width:90vw}.w-\[95vw\]{width:95vw}.w-\[136px\]{width:136px}.w-\[160px\]{width:160px}.w-\[180px\]{width:180px}.w-\[212px\]{width:212px}.w-\[220px\]{width:220px}.w-\[264px\]{width:264px}.w-\[280px\]{width:280px}.w-\[300px\]{width:300px}.w-\[400px\]{width:400px}.w-\[min\(1080px\,94vw\)\]{width:min(1080px,94vw)}.w-\[min\(1100px\,95vw\)\]{width:min(1100px,95vw)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-min{width:min-content}.w-px{width:1px}.w-screen{width:100vw}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-20{max-width:calc(var(--spacing) * 20)}.max-w-\[40px\]{max-width:40px}.max-w-\[80px\]{max-width:80px}.max-w-\[90px\]{max-width:90px}.max-w-\[420px\]{max-width:420px}.max-w-\[calc\(100\%-5rem\)\]{max-width:calc(100% - 5rem)}.max-w-fit{max-width:fit-content}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-max{max-width:max-content}.max-w-min{max-width:min-content}.max-w-none{max-width:none}.min-w-0{min-width:0}.min-w-\[3\.5rem\]{min-width:3.5rem}.min-w-\[8rem\]{min-width:8rem}.min-w-\[52px\]{min-width:52px}.min-w-\[60px\]{min-width:60px}.min-w-\[176px\]{min-width:176px}.min-w-\[300px\]{min-width:300px}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-fit{min-width:fit-content}.min-w-full{min-width:100%}.min-w-max{min-width:max-content}.min-w-min{min-width:min-content}.flex-1{flex:1}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-0{flex-basis:0}.basis-1\/2{flex-basis:50%}.basis-auto{flex-basis:auto}.basis-full{flex-basis:100%}.border-collapse{border-collapse:collapse}.border-separate{border-collapse:separate}.origin-\[--radix-context-menu-content-transform-origin\]{transform-origin:--radix-context-menu-content-transform-origin}.origin-\[--radix-dropdown-menu-content-transform-origin\]{transform-origin:--radix-dropdown-menu-content-transform-origin}.origin-\[--radix-popover-content-transform-origin\]{transform-origin:--radix-popover-content-transform-origin}.origin-\[--radix-select-content-transform-origin\]{transform-origin:--radix-select-content-transform-origin}.origin-\[--radix-tooltip-content-transform-origin\]{transform-origin:--radix-tooltip-content-transform-origin}.origin-top-left{transform-origin:0 0}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-75{--tw-scale-x:75%;--tw-scale-y:75%;--tw-scale-z:75%;scale:var(--tw-scale-x) var(--tw-scale-y)}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.cursor-alias{cursor:alias}.cursor-all-scroll{cursor:all-scroll}.cursor-auto{cursor:auto}.cursor-cell{cursor:cell}.cursor-col-resize{cursor:col-resize}.cursor-context-menu{cursor:context-menu}.cursor-copy{cursor:copy}.cursor-crosshair{cursor:crosshair}.cursor-default{cursor:default}.cursor-e-resize{cursor:e-resize}.cursor-ew-resize{cursor:ew-resize}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-help{cursor:help}.cursor-move{cursor:move}.cursor-n-resize{cursor:n-resize}.cursor-ne-resize{cursor:ne-resize}.cursor-nesw-resize{cursor:nesw-resize}.cursor-no-drop{cursor:no-drop}.cursor-none{cursor:none}.cursor-not-allowed{cursor:not-allowed}.cursor-ns-resize{cursor:ns-resize}.cursor-nw-resize{cursor:nw-resize}.cursor-nwse-resize{cursor:nwse-resize}.cursor-pointer{cursor:pointer}.cursor-progress{cursor:progress}.cursor-row-resize{cursor:row-resize}.cursor-s-resize{cursor:s-resize}.cursor-se-resize{cursor:se-resize}.cursor-sw-resize{cursor:sw-resize}.cursor-text{cursor:text}.cursor-vertical-text{cursor:vertical-text}.cursor-w-resize{cursor:w-resize}.cursor-wait{cursor:wait}.cursor-zoom-in{cursor:zoom-in}.cursor-zoom-out{cursor:zoom-out}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.\[appearance\:textfield\]{appearance:textfield}.appearance-none{appearance:none}.grid-flow-col{grid-auto-flow:column}.grid-flow-col-dense{grid-auto-flow:column dense}.grid-flow-dense{grid-auto-flow:dense}.grid-flow-row{grid-auto-flow:row}.grid-flow-row-dense{grid-auto-flow:dense}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-cols-none{grid-template-columns:none}.grid-cols-subgrid{grid-template-columns:subgrid}.grid-rows-none{grid-template-rows:none}.grid-rows-subgrid{grid-template-rows:subgrid}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.content-around{align-content:space-around}.content-baseline{align-content:baseline}.content-between{align-content:space-between}.content-center{align-content:center}.content-end{align-content:flex-end}.content-evenly{align-content:space-evenly}.content-start{align-content:flex-start}.content-stretch{align-content:stretch}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-around{justify-content:space-around}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-evenly{justify-content:space-evenly}.justify-start{justify-content:flex-start}.justify-stretch{justify-content:stretch}.gap-0{gap:0}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-\[3px\]{gap:3px}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-0{column-gap:0}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-y-0{row-gap:0}.gap-y-1\.5{row-gap:calc(var(--spacing) * 1.5)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.self-auto{align-self:auto}.self-baseline{align-self:baseline}.self-center{align-self:center}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-clip{overflow:clip}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-x-clip{overflow-x:clip}.overflow-x-hidden{overflow-x:hidden}.overflow-x-scroll{overflow-x:scroll}.overflow-x-visible{overflow-x:visible}.overflow-y-auto{overflow-y:auto}.overflow-y-clip{overflow-y:clip}.overflow-y-hidden{overflow-y:hidden}.overflow-y-scroll{overflow-y:scroll}.overflow-y-visible{overflow-y:visible}.rounded{border-radius:var(--radius)}.rounded-\[2px\]{border-radius:2px}.rounded-\[3px\]{border-radius:3px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.rounded-l{border-top-left-radius:var(--radius);border-bottom-left-radius:var(--radius)}.rounded-tl{border-top-left-radius:var(--radius)}.rounded-r{border-top-right-radius:var(--radius);border-bottom-right-radius:var(--radius)}.rounded-tr{border-top-right-radius:var(--radius)}.rounded-br{border-bottom-right-radius:var(--radius)}.rounded-bl{border-bottom-left-radius:var(--radius)}.\!border-2{border-style:var(--tw-border-style)!important;border-width:2px!important}.border{border-style:var(--tw-border-style);border-width:1px}.border-\(length\:--w\){border-style:var(--tw-border-style);border-width:var(--w)}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-2\!{border-style:var(--tw-border-style)!important;border-width:2px!important}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-\[2px\]{border-style:var(--tw-border-style);border-width:2px}.border-\[3px\]{border-style:var(--tw-border-style);border-width:3px}.border-\[4px\]{border-style:var(--tw-border-style);border-width:4px}.border-\[length\:var\(--w\)\]{border-style:var(--tw-border-style);border-width:var(--w)}.border-\[medium\]{border-style:var(--tw-border-style);border-width:medium}.border-\[min\(2px\,1vw\)\]{border-style:var(--tw-border-style);border-width:min(2px,1vw)}.border-\[thick\]{border-style:var(--tw-border-style);border-width:thick}.border-\[thin\]{border-style:var(--tw-border-style);border-width:thin}.border-x-2{border-inline-style:var(--tw-border-style);border-inline-width:2px}.border-bs-2{border-block-start-style:var(--tw-border-style);border-block-start-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-0{border-left-style:var(--tw-border-style);border-left-width:0}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-l-\[5px\]{border-left-style:var(--tw-border-style);border-left-width:5px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-dashed\!{--tw-border-style:dashed!important;border-style:dashed!important}.border-dotted{--tw-border-style:dotted;border-style:dotted}.border-double{--tw-border-style:double;border-style:double}.border-hidden{--tw-border-style:hidden;border-style:hidden}.border-none{--tw-border-style:none;border-style:none}.border-solid{--tw-border-style:solid;border-style:solid}.border-\[\#0d99ff\]{border-color:#0d99ff}.border-\[\#0d99ff\]\/30{border-color:oklab(66.9841% -.0648249 -.170866/.3)}.border-\[\#0d99ff\]\/50{border-color:oklab(66.9841% -.0648249 -.170866/.5)}.border-\[\#0d99ff\]\/60{border-color:oklab(66.9841% -.0648249 -.170866/.6)}.border-\[\#4a4a4a\]{border-color:#4a4a4a}.border-\[\#5d5d5d\]{border-color:#5d5d5d}.border-\[\#444444\]{border-color:#444}.border-\[\#444444\]\/50{border-color:oklab(38.6654% 0 0/.5)}.border-\[\#fff\],.border-\[\#ffffff\]{border-color:#fff}.border-\[mediumblue\]{border-color:#0000cd}.border-\[var\(--x\)\]{border-color:var(--x)}.border-amber-500{border-color:var(--color-amber-500)}.border-amber-500\/60{border-color:#f99c0099}@supports (color:color-mix(in lab, red, red)){.border-amber-500\/60{border-color:color-mix(in oklab, var(--color-amber-500) 60%, transparent)}}.border-blue-600\/30{border-color:#155dfc4d}@supports (color:color-mix(in lab, red, red)){.border-blue-600\/30{border-color:color-mix(in oklab, var(--color-blue-600) 30%, transparent)}}.border-blue-600\/40{border-color:#155dfc66}@supports (color:color-mix(in lab, red, red)){.border-blue-600\/40{border-color:color-mix(in oklab, var(--color-blue-600) 40%, transparent)}}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-500{border-color:var(--color-gray-500)}.border-gray-700{border-color:var(--color-gray-700)}.border-green-500\/30{border-color:#00c7584d}@supports (color:color-mix(in lab, red, red)){.border-green-500\/30{border-color:color-mix(in oklab, var(--color-green-500) 30%, transparent)}}.border-green-600{border-color:var(--color-green-600)}.border-input{border-color:var(--color-input)}.border-primary{border-color:var(--color-primary)}.border-primary\/50{border-color:#17171780}@supports (color:color-mix(in lab, red, red)){.border-primary\/50{border-color:color-mix(in oklab, var(--color-primary) 50%, transparent)}}.border-purple-500{border-color:var(--color-purple-500)}.border-purple-500\/30{border-color:#ac4bff4d}@supports (color:color-mix(in lab, red, red)){.border-purple-500\/30{border-color:color-mix(in oklab, var(--color-purple-500) 30%, transparent)}}.border-purple-500\/50{border-color:#ac4bff80}@supports (color:color-mix(in lab, red, red)){.border-purple-500\/50{border-color:color-mix(in oklab, var(--color-purple-500) 50%, transparent)}}.border-red-500\/50{border-color:#fb2c3680}@supports (color:color-mix(in lab, red, red)){.border-red-500\/50{border-color:color-mix(in oklab, var(--color-red-500) 50%, transparent)}}.border-transparent{border-color:#0000}.border-white{border-color:var(--color-white)}.border-yellow-500\/30{border-color:#edb2004d}@supports (color:color-mix(in lab, red, red)){.border-yellow-500\/30{border-color:color-mix(in oklab, var(--color-yellow-500) 30%, transparent)}}.border-t-blue-500{border-top-color:var(--color-blue-500)}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-\[\#0F6CBD\]{background-color:#0f6cbd}.bg-\[\#0d99ff\]{background-color:#0d99ff}.bg-\[\#0d99ff\]\/10{background-color:oklab(66.9841% -.0648249 -.170866/.1)}.bg-\[\#0d99ff\]\/15{background-color:oklab(66.9841% -.0648249 -.170866/.15)}.bg-\[\#0d99ff\]\/20{background-color:oklab(66.9841% -.0648249 -.170866/.2)}.bg-\[\#0d99ff\]\/25{background-color:oklab(66.9841% -.0648249 -.170866/.25)}.bg-\[\#0d99ff\]\/30{background-color:oklab(66.9841% -.0648249 -.170866/.3)}.bg-\[\#0d99ff\]\/40{background-color:oklab(66.9841% -.0648249 -.170866/.4)}.bg-\[\#1e1e1e\]{background-color:#1e1e1e}.bg-\[\#2a2a2a\]{background-color:#2a2a2a}.bg-\[\#2c2c2c\]{background-color:#2c2c2c}.bg-\[\#2e2e2e\]{background-color:#2e2e2e}.bg-\[\#4a4a4a\]{background-color:#4a4a4a}.bg-\[\#5a5a5a\]{background-color:#5a5a5a}.bg-\[\#37373d\]{background-color:#37373d}.bg-\[\#383838\]{background-color:#383838}.bg-\[\#444444\]{background-color:#444}.bg-\[\#444444\]\/20{background-color:oklab(38.6654% 0 0/.2)}.bg-\[\#C43E1C\]{background-color:#c43e1c}.bg-\[\#ff0000\]{background-color:red}.bg-amber-600{background-color:var(--color-amber-600)}.bg-background{background-color:var(--color-background)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-black\/80{background-color:#000c}@supports (color:color-mix(in lab, red, red)){.bg-black\/80{background-color:color-mix(in oklab, var(--color-black) 80%, transparent)}}.bg-black\/90{background-color:#000000e6}@supports (color:color-mix(in lab, red, red)){.bg-black\/90{background-color:color-mix(in oklab, var(--color-black) 90%, transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-border{background-color:var(--color-border)}.bg-card{background-color:var(--color-card)}.bg-destructive{background-color:var(--color-destructive)}.bg-gg-green{background-color:var(--color-gg-green)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab, red, red)){.bg-green-500\/10{background-color:color-mix(in oklab, var(--color-green-500) 10%, transparent)}}.bg-green-600{background-color:var(--color-green-600)}.bg-mark-green{background-color:var(--color-mark-green)}.bg-muted{background-color:var(--color-muted)}.bg-popover{background-color:var(--color-popover)}.bg-primary{background-color:var(--color-primary)}.bg-primary\/20{background-color:#17171733}@supports (color:color-mix(in lab, red, red)){.bg-primary\/20{background-color:color-mix(in oklab, var(--color-primary) 20%, transparent)}}.bg-purple-500{background-color:var(--color-purple-500)}.bg-purple-500\/10{background-color:#ac4bff1a}@supports (color:color-mix(in lab, red, red)){.bg-purple-500\/10{background-color:color-mix(in oklab, var(--color-purple-500) 10%, transparent)}}.bg-purple-500\/20{background-color:#ac4bff33}@supports (color:color-mix(in lab, red, red)){.bg-purple-500\/20{background-color:color-mix(in oklab, var(--color-purple-500) 20%, transparent)}}.bg-purple-600{background-color:var(--color-purple-600)}.bg-purple-600\/30{background-color:#9810fa4d}@supports (color:color-mix(in lab, red, red)){.bg-purple-600\/30{background-color:color-mix(in oklab, var(--color-purple-600) 30%, transparent)}}.bg-purple-900\/30{background-color:#59168b4d}@supports (color:color-mix(in lab, red, red)){.bg-purple-900\/30{background-color:color-mix(in oklab, var(--color-purple-900) 30%, transparent)}}.bg-purple-900\/50{background-color:#59168b80}@supports (color:color-mix(in lab, red, red)){.bg-purple-900\/50{background-color:color-mix(in oklab, var(--color-purple-900) 50%, transparent)}}.bg-red-500\/20{background-color:#fb2c3633}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/20{background-color:color-mix(in oklab, var(--color-red-500) 20%, transparent)}}.bg-red-500\/90{background-color:#fb2c36e6}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/90{background-color:color-mix(in oklab, var(--color-red-500) 90%, transparent)}}.bg-red-600{background-color:var(--color-red-600)}.bg-secondary{background-color:var(--color-secondary)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/15{background-color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.bg-white\/15{background-color:color-mix(in oklab, var(--color-white) 15%, transparent)}}.bg-white\/20{background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.bg-white\/20{background-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.bg-yellow-500\/10{background-color:#edb2001a}@supports (color:color-mix(in lab, red, red)){.bg-yellow-500\/10{background-color:color-mix(in oklab, var(--color-yellow-500) 10%, transparent)}}.bg-cover{background-size:cover}.bg-center{background-position:50%}.fill-current{fill:currentColor}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.object-fill{object-fit:fill}.object-none{object-fit:none}.object-scale-down{object-fit:scale-down}.object-bottom{object-position:bottom}.object-center{object-position:center}.object-left{object-position:left}.object-left-bottom{object-position:left bottom}.object-left-top{object-position:left top}.object-right{object-position:right}.object-right-bottom{object-position:right bottom}.object-right-top{object-position:right top}.object-top{object-position:top}.p-0{padding:0}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-\[1px\]{padding:1px}.px-0{padding-inline:0}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.px-\[6px\]{padding-inline:6px}.py-0{padding-block:0}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-\[3px\]{padding-block:3px}.pt-0{padding-top:0}.pt-1{padding-top:var(--spacing)}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-0{padding-right:0}.pr-1{padding-right:var(--spacing)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pr-7{padding-right:calc(var(--spacing) * 7)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-0{padding-bottom:0}.pb-0\.5{padding-bottom:calc(var(--spacing) * .5)}.pb-1{padding-bottom:var(--spacing)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pl-0{padding-left:0}.pl-1\.5{padding-left:calc(var(--spacing) * 1.5)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-7{padding-left:calc(var(--spacing) * 7)}.pl-8{padding-left:calc(var(--spacing) * 8)}.text-center{text-align:center}.text-end{text-align:end}.text-justify{text-align:justify}.text-left{text-align:left}.text-right{text-align:right}.text-start{text-align:start}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.text-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--line-height))}.text-8xl{font-size:var(--text-8xl);line-height:var(--tw-leading,var(--text-8xl--line-height))}.text-9xl{font-size:var(--text-9xl);line-height:var(--tw-leading,var(--text-9xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[2em\]{font-size:2em}.text-\[6px\]{font-size:6px}.text-\[7px\]{font-size:7px}.text-\[8px\]{font-size:8px}.text-\[9\.5px\]{font-size:9.5px}.text-\[9px\]{font-size:9px}.text-\[10\.5px\]{font-size:10.5px}.text-\[10px\]{font-size:10px}.text-\[11\.5px\]{font-size:11.5px}.text-\[11px\]{font-size:11px}.text-\[12\.5px\]{font-size:12.5px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[26px\]{font-size:26px}.text-\[32px\]{font-size:32px}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-loose{--tw-leading:var(--leading-loose);line-height:var(--leading-loose)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-extralight{--tw-font-weight:var(--font-weight-extralight);font-weight:var(--font-weight-extralight)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.font-thin{--tw-font-weight:var(--font-weight-thin);font-weight:var(--font-weight-thin)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-normal{overflow-wrap:normal;word-break:normal}.break-all{word-break:break-all}.break-keep{word-break:keep-all}.text-clip{text-overflow:clip}.text-ellipsis{text-overflow:ellipsis}.whitespace-break-spaces{white-space:break-spaces}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#0d99ff\]{color:#0d99ff}.text-\[\#4fb8ff\]{color:#4fb8ff}.text-\[\#7cc4ff\]{color:#7cc4ff}.text-\[hsl\(\.\.\.\)\]{color:hsl(...)}.text-\[rgb\(\)\]{color:rgb()}.text-\[数値\]{color:数値}.text-amber-400{color:var(--color-amber-400)}.text-amber-400\/90{color:#fcbb00e6}@supports (color:color-mix(in lab, red, red)){.text-amber-400\/90{color:color-mix(in oklab, var(--color-amber-400) 90%, transparent)}}.text-amber-600{color:var(--color-amber-600)}.text-black{color:var(--color-black)}.text-blue-100{color:var(--color-blue-100)}.text-blue-200{color:var(--color-blue-200)}.text-blue-500{color:var(--color-blue-500)}.text-blue-700{color:var(--color-blue-700)}.text-card-foreground{color:var(--color-card-foreground)}.text-current{color:currentColor}.text-destructive-foreground{color:var(--color-destructive-foreground)}.text-foreground{color:var(--color-foreground)}.text-gray-100{color:var(--color-gray-100)}.text-gray-200{color:var(--color-gray-200)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-green-400{color:var(--color-green-400)}.text-inherit{color:inherit}.text-muted{color:var(--color-muted)}.text-muted-foreground{color:var(--color-muted-foreground)}.text-popover-foreground{color:var(--color-popover-foreground)}.text-primary{color:var(--color-primary)}.text-primary-foreground{color:var(--color-primary-foreground)}.text-purple-200{color:var(--color-purple-200)}.text-purple-300{color:var(--color-purple-300)}.text-purple-400{color:var(--color-purple-400)}.text-purple-600{color:var(--color-purple-600)}.text-red-300{color:var(--color-red-300)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-secondary-foreground{color:var(--color-secondary-foreground)}.text-sky-400{color:var(--color-sky-400)}.text-transparent{color:#0000}.text-white{color:var(--color-white)}.text-white\/85{color:#ffffffd9}@supports (color:color-mix(in lab, red, red)){.text-white\/85{color:color-mix(in oklab, var(--color-white) 85%, transparent)}}.text-yellow-400{color:var(--color-yellow-400)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.accent-\[\#0F6CBD\]{accent-color:#0f6cbd}.opacity-0{opacity:0}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-100{opacity:1}.bg-blend-color{background-blend-mode:color}.bg-blend-color-burn{background-blend-mode:color-burn}.bg-blend-color-dodge{background-blend-mode:color-dodge}.bg-blend-darken{background-blend-mode:darken}.bg-blend-difference{background-blend-mode:difference}.bg-blend-exclusion{background-blend-mode:exclusion}.bg-blend-hard-light{background-blend-mode:hard-light}.bg-blend-hue{background-blend-mode:hue}.bg-blend-lighten{background-blend-mode:lighten}.bg-blend-luminosity{background-blend-mode:luminosity}.bg-blend-multiply{background-blend-mode:multiply}.bg-blend-normal{background-blend-mode:normal}.bg-blend-overlay{background-blend-mode:overlay}.bg-blend-saturation{background-blend-mode:saturation}.bg-blend-screen{background-blend-mode:screen}.bg-blend-soft-light{background-blend-mode:soft-light}.mix-blend-color{mix-blend-mode:color}.mix-blend-color-burn{mix-blend-mode:color-burn}.mix-blend-color-dodge{mix-blend-mode:color-dodge}.mix-blend-darken{mix-blend-mode:darken}.mix-blend-difference{mix-blend-mode:difference}.mix-blend-exclusion{mix-blend-mode:exclusion}.mix-blend-hard-light{mix-blend-mode:hard-light}.mix-blend-hue{mix-blend-mode:hue}.mix-blend-lighten{mix-blend-mode:lighten}.mix-blend-luminosity{mix-blend-mode:luminosity}.mix-blend-multiply{mix-blend-mode:multiply}.mix-blend-normal{mix-blend-mode:normal}.mix-blend-overlay{mix-blend-mode:overlay}.mix-blend-plus-darker{mix-blend-mode:plus-darker}.mix-blend-plus-lighter{mix-blend-mode:plus-lighter}.mix-blend-saturation{mix-blend-mode:saturation}.mix-blend-screen{mix-blend-mode:screen}.mix-blend-soft-light{mix-blend-mode:soft-light}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-\[\#0d99ff\]{--tw-ring-color:#0d99ff}.ring-\[\#0d99ff\]\/50{--tw-ring-color:oklab(66.9841% -.0648249 -.170866/.5)}.ring-offset-background{--tw-ring-offset-color:var(--color-background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a)) drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a) drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-md{--tw-drop-shadow-size:drop-shadow(0 3px 3px var(--tw-drop-shadow-color,#0000001f));--tw-drop-shadow:drop-shadow(var(--drop-shadow-md));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.sepia{--tw-sepia:sepia(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{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,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-all{-webkit-user-select:all;user-select:all}.select-auto{-webkit-user-select:auto;user-select:auto}.select-none{-webkit-user-select:none;user-select:none}.select-text{-webkit-user-select:text;user-select:text}.ring-inset{--tw-ring-inset:inset}.group-focus-within\:opacity-100:is(:where(.group):focus-within *){opacity:1}@media (hover:hover){.group-hover\:scale-\[1\.04\]:is(:where(.group):hover *){scale:1.04}.group-hover\:text-white:is(:where(.group):hover *){color:var(--color-white)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.group-hover\/fill\:block:is(:where(.group\/fill):hover *){display:block}.group-hover\/var-input\:opacity-100:is(:where(.group\/var-input):hover *){opacity:1}}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-70:is(:where(.peer):disabled~*){opacity:.7}.selection\:bg-transparent ::selection{background-color:#0000}.selection\:bg-transparent::selection{background-color:#0000}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--color-foreground)}.placeholder\:text-gray-500::placeholder{color:var(--color-gray-500)}.placeholder\:text-gray-600::placeholder{color:var(--color-gray-600)}.placeholder\:text-muted-foreground::placeholder{color:var(--color-muted-foreground)}.focus-within\:border-\[\#0d99ff\]:focus-within{border-color:#0d99ff}.focus-within\:ring-1:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-within\:ring-\[\#0d99ff\]:focus-within{--tw-ring-color:#0d99ff}@media (hover:hover){.hover\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:border-\[\#0d99ff\]:hover{border-color:#0d99ff}.hover\:border-\[\#5d5d5d\]:hover{border-color:#5d5d5d}.hover\:border-\[\#555\]:hover{border-color:#555}.hover\:border-gray-500:hover{border-color:var(--color-gray-500)}.hover\:bg-\[\#0c8ce9\]:hover{background-color:#0c8ce9}.hover\:bg-\[\#0d99ff\]:hover{background-color:#0d99ff}.hover\:bg-\[\#0d99ff\]\/30:hover{background-color:oklab(66.9841% -.0648249 -.170866/.3)}.hover\:bg-\[\#2c2c2c\]:hover{background-color:#2c2c2c}.hover\:bg-\[\#4a4a4a\]:hover{background-color:#4a4a4a}.hover\:bg-\[\#4c4c4c\]:hover{background-color:#4c4c4c}.hover\:bg-\[\#5d5d5d\]:hover{background-color:#5d5d5d}.hover\:bg-\[\#6a6a6a\]:hover{background-color:#6a6a6a}.hover\:bg-\[\#333\]:hover{background-color:#333}.hover\:bg-\[\#353535\]:hover{background-color:#353535}.hover\:bg-\[\#383838\]:hover{background-color:#383838}.hover\:bg-\[\#444444\]:hover{background-color:#444}.hover\:bg-\[\#444444\]\/30:hover{background-color:oklab(38.6654% 0 0/.3)}.hover\:bg-\[\#444444\]\/50:hover{background-color:oklab(38.6654% 0 0/.5)}.hover\:bg-accent:hover{background-color:var(--color-accent)}.hover\:bg-blue-100:hover{background-color:var(--color-blue-100)}.hover\:bg-blue-500\/50:hover{background-color:#3080ff80}@supports (color:color-mix(in lab, red, red)){.hover\:bg-blue-500\/50:hover{background-color:color-mix(in oklab, var(--color-blue-500) 50%, transparent)}}.hover\:bg-destructive\/80:hover{background-color:#ef4444cc}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/80:hover{background-color:color-mix(in oklab, var(--color-destructive) 80%, transparent)}}.hover\:bg-destructive\/90:hover{background-color:#ef4444e6}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab, var(--color-destructive) 90%, transparent)}}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-gray-600:hover{background-color:var(--color-gray-600)}.hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}.hover\:bg-primary\/80:hover{background-color:#171717cc}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/80:hover{background-color:color-mix(in oklab, var(--color-primary) 80%, transparent)}}.hover\:bg-primary\/90:hover{background-color:#171717e6}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab, var(--color-primary) 90%, transparent)}}.hover\:bg-purple-500\/20:hover{background-color:#ac4bff33}@supports (color:color-mix(in lab, red, red)){.hover\:bg-purple-500\/20:hover{background-color:color-mix(in oklab, var(--color-purple-500) 20%, transparent)}}.hover\:bg-purple-500\/30:hover{background-color:#ac4bff4d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-purple-500\/30:hover{background-color:color-mix(in oklab, var(--color-purple-500) 30%, transparent)}}.hover\:bg-purple-700:hover{background-color:var(--color-purple-700)}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:bg-red-500\/10:hover{background-color:#fb2c361a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-red-500\/10:hover{background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)}}.hover\:bg-red-500\/20:hover{background-color:#fb2c3633}@supports (color:color-mix(in lab, red, red)){.hover\:bg-red-500\/20:hover{background-color:color-mix(in oklab, var(--color-red-500) 20%, transparent)}}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:bg-red-900\/30:hover{background-color:#82181a4d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-red-900\/30:hover{background-color:color-mix(in oklab, var(--color-red-900) 30%, transparent)}}.hover\:bg-secondary\/80:hover{background-color:#f5f5f5cc}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab, var(--color-secondary) 80%, transparent)}}.hover\:bg-transparent:hover{background-color:#0000}.hover\:bg-white\/10:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/10:hover{background-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.hover\:text-accent-foreground:hover{color:var(--color-accent-foreground)}.hover\:text-amber-300:hover{color:var(--color-amber-300)}.hover\:text-blue-400:hover{color:var(--color-blue-400)}.hover\:text-blue-600:hover{color:var(--color-blue-600)}.hover\:text-gray-100:hover{color:var(--color-gray-100)}.hover\:text-gray-200:hover{color:var(--color-gray-200)}.hover\:text-gray-300:hover{color:var(--color-gray-300)}.hover\:text-gray-600:hover{color:var(--color-gray-600)}.hover\:text-gray-700:hover{color:var(--color-gray-700)}.hover\:text-green-300:hover{color:var(--color-green-300)}.hover\:text-green-400:hover{color:var(--color-green-400)}.hover\:text-purple-300:hover{color:var(--color-purple-300)}.hover\:text-red-300:hover{color:var(--color-red-300)}.hover\:text-red-400:hover{color:var(--color-red-400)}.hover\:text-red-600:hover{color:var(--color-red-600)}.hover\:text-red-700:hover{color:var(--color-red-700)}.hover\:text-white:hover{color:var(--color-white)}.hover\:no-underline:hover{text-decoration-line:none}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}.hover\:opacity-100:hover{opacity:1}.hover\:ring-2:hover{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:ring-\[\#0d99ff\]:hover{--tw-ring-color:#0d99ff}}.focus\:border-\[\#0d99ff\]:focus{border-color:#0d99ff}.focus\:border-purple-500:focus{border-color:var(--color-purple-500)}.focus\:bg-\[\#383838\]:focus{background-color:#383838}.focus\:bg-\[\#444444\]:focus{background-color:#444}.focus\:bg-accent:focus{background-color:var(--color-accent)}.focus\:bg-gray-700:focus{background-color:var(--color-gray-700)}.focus\:bg-white\/10:focus{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.focus\:bg-white\/10:focus{background-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.focus\:text-accent-foreground:focus{color:var(--color-accent-foreground)}.focus\:text-white:focus{color:var(--color-white)}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-\[\#0d99ff\]:focus{--tw-ring-color:#0d99ff}.focus\:ring-purple-500:focus{--tw-ring-color:var(--color-purple-500)}.focus\:ring-ring:focus{--tw-ring-color:var(--color-ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:opacity-100:focus-visible{opacity:1}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-\[\#0d99ff\]:focus-visible{--tw-ring-color:#0d99ff}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--color-ring)}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-\[\#2c2c2c\]:focus-visible{--tw-ring-offset-color:#2c2c2c}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color:var(--color-background)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:text-blue-500:active{color:var(--color-blue-500)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-\[\#2a2a2a\]:disabled{background-color:#2a2a2a}.disabled\:bg-\[\#383838\]:disabled{background-color:#383838}.disabled\:bg-gray-50:disabled{background-color:var(--color-gray-50)}.disabled\:bg-gray-100:disabled{background-color:var(--color-gray-100)}.disabled\:text-gray-400:disabled{color:var(--color-gray-400)}.disabled\:text-gray-500:disabled{color:var(--color-gray-500)}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}@media (hover:hover){.disabled\:hover\:bg-transparent:disabled:hover{background-color:#0000}}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--color-muted-foreground)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=active\]\:bg-\[\#383838\][data-state=active]{background-color:#383838}.data-\[state\=active\]\:bg-\[\#444444\][data-state=active]{background-color:#444}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:var(--color-background)}.data-\[state\=active\]\:text-foreground[data-state=active]{color:var(--color-foreground)}.data-\[state\=active\]\:text-white[data-state=active]{color:var(--color-white)}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:bg-\[\#0d99ff\][data-state=checked]{background-color:#0d99ff}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--color-primary)}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:var(--color-primary-foreground)}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:var(--color-accent)}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:var(--color-accent-foreground)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--color-muted-foreground)}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:var(--color-input)}@media (min-width:40rem){.sm\:mt-0{margin-top:0}.sm\:max-w-\[600px\]{max-width:600px}.sm\:max-w-\[900px\]{max-width:900px}.sm\:flex-row{flex-direction:row}.sm\:justify-between{justify-content:space-between}.sm\:justify-end{justify-content:flex-end}:where(.sm\:space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}.sm\:rounded-lg{border-radius:var(--radius-lg)}.sm\:text-left{text-align:left}}@media (min-width:48rem){.md\:flex{display:flex}.md\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&\:\:-webkit-inner-spin-button\]\:appearance-none::-webkit-inner-spin-button{appearance:none}.\[\&\:\:-webkit-outer-spin-button\]\:appearance-none::-webkit-outer-spin-button{appearance:none}.\[\&\>button\:last-child\]\:hidden>button:last-child{display:none}.\[\&\>span\]\:line-clamp-1>span{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{rotate:180deg}.gg-editor-skin{--ed-bg:#1e1e1e;--ed-panel:#2c2c2c;--ed-panel-raised:#2c2c2c;--ed-surface:#383838;--ed-surface-hover:#444;--ed-line:#ffffff1a;--ed-line-strong:#ffffff29;--ed-accent:#0d99ff;--ed-accent-strong:#0d99ff;--ed-accent-hover:#0c8ce9}.gg-editor-skin .bg-\[\#1e1e1e\]{background-color:var(--ed-bg)}.gg-editor-skin .bg-\[\#2c2c2c\],.gg-editor-skin .bg-\[\#2a2a2a\]{background-color:var(--ed-panel)}.gg-editor-skin .bg-\[\#383838\]{background-color:var(--ed-surface)}.gg-editor-skin .bg-\[\#444444\],.gg-editor-skin .bg-\[\#4a4a4a\],.gg-editor-skin .bg-\[\#5d5d5d\]{background-color:var(--ed-surface-hover)}.gg-editor-skin .hover\:bg-\[\#444444\]:hover,.gg-editor-skin .hover\:bg-\[\#383838\]:hover{background-color:#ffffff14}.gg-editor-skin .hover\:bg-\[\#4a4a4a\]:hover{background-color:var(--ed-surface-hover)}.gg-editor-skin .border-\[\#444444\],.gg-editor-skin .border-\[\#383838\],.gg-editor-skin .border-\[\#2c2c2c\]{border-color:var(--ed-line)}.gg-editor-skin .border-\[\#4a4a4a\],.gg-editor-skin .border-\[\#5d5d5d\]{border-color:var(--ed-line-strong)}.gg-editor-skin .hover\:border-\[\#4a4a4a\]:hover,.gg-editor-skin .hover\:border-\[\#5d5d5d\]:hover{border-color:#0d99ff99}.gg-editor-skin .w-px.bg-\[\#444444\],.gg-editor-skin .h-px.bg-\[\#444444\]{background-color:var(--ed-line)}.gg-editor-skin .bg-\[\#0d99ff\],.gg-editor-skin .bg-blue-500,.gg-editor-skin .bg-blue-600{background-color:var(--ed-accent-strong)}.gg-editor-skin .hover\:bg-\[\#0c8ce9\]:hover,.gg-editor-skin .hover\:bg-blue-600:hover,.gg-editor-skin .hover\:bg-blue-700:hover{background-color:var(--ed-accent-hover)}.gg-editor-skin .text-\[\#0d99ff\],.gg-editor-skin .text-\[\#4fb8ff\],.gg-editor-skin .text-blue-400,.gg-editor-skin .text-blue-500{color:var(--ed-accent)}.gg-editor-skin .border-\[\#0d99ff\],.gg-editor-skin .border-blue-500{border-color:var(--ed-accent)}.gg-editor-skin .ring-\[\#0d99ff\],.gg-editor-skin .ring-blue-500{--tw-ring-color:var(--ed-accent)}.gg-editor-skin .text-gray-300{color:#ffffffd9}.gg-editor-skin .text-gray-400{color:#ffffffb3}.gg-editor-skin .text-gray-500{color:#ffffff73}.gg-editor-skin .rounded{border-radius:.375rem}.gg-editor-skin .shadow-lg,.gg-editor-skin .shadow-xl,.gg-editor-skin .shadow-2xl{box-shadow:0 5px 17px #00000059,0 2px 7px #00000026}.gg-editor-skin input:focus-visible,.gg-editor-skin button:focus-visible,.gg-editor-skin select:focus-visible{outline:2px solid var(--ed-accent);outline-offset:1px}@layer gg-editor-defaults{.gg-editor-ui{text-align:left;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Hiragino Sans,Meiryo,sans-serif;font-size:12px;line-height:1.5}.gg-editor-ui,.gg-editor-ui :where(*){box-sizing:border-box;border-style:solid;border-width:0}.gg-editor-ui :where(button,input,textarea,select){font:inherit;color:inherit;margin:0}.gg-editor-ui :where(button){cursor:pointer;background:0 0}.gg-editor-ui :where(button:disabled){cursor:default}.gg-editor-ui :where(p,h1,h2,h3,h4,ul,ol){margin:0;padding:0}.gg-editor-ui :where(svg){flex-shrink:0;display:block}.gg-editor-ui :where(input,textarea){min-width:0}}.gg-editor-ui{color-scheme:light;--ed-bg:#f5f5f5;--ed-canvas:#f5f5f5;--ed-panel:#fff;--ed-panel-raised:#fff;--ed-surface:#f5f5f5;--ed-surface-hover:#e6e6e6;--ed-text:#1e1e1e;--ed-muted:#6b6b6b;--ed-line:#e6e6e6;--ed-line-strong:#b3b3b3;--ed-accent:#0d99ff;--ed-accent-strong:#0d99ff;--ed-accent-hover:#0c8ce9;--ed-accent-soft:#e5f4ff;--ed-success:#14ae5c;--ed-warning:#8f5a00;--ed-danger:#dc3412;--ed-frame-edge:#00000014;--ed-shadow:0 5px 17px #0003, 0 2px 7px #00000026;--ed-radius:6px;--ed-focus:0 0 0 2px var(--ed-panel), 0 0 0 4px var(--ed-accent);--color-background:var(--ed-panel);--color-foreground:var(--ed-text);--color-card:var(--ed-panel);--color-card-foreground:var(--ed-text);--color-popover:var(--ed-panel-raised);--color-popover-foreground:var(--ed-text);--color-primary:var(--ed-accent-strong);--color-primary-foreground:#fff;--color-secondary:var(--ed-surface);--color-secondary-foreground:var(--ed-text);--color-muted:var(--ed-surface);--color-muted-foreground:var(--ed-muted);--color-accent:var(--ed-surface-hover);--color-accent-foreground:var(--ed-text);--color-border:var(--ed-line);--color-input:var(--ed-line-strong);--color-ring:var(--ed-accent);--color-destructive:var(--ed-danger);color:var(--ed-text);accent-color:var(--ed-accent-strong);scrollbar-color:var(--ed-line-strong) transparent}.gg-editor-ui[data-editor-theme=dark]{color-scheme:dark;--ed-bg:#1e1e1e;--ed-canvas:#1e1e1e;--ed-panel:#2c2c2c;--ed-panel-raised:#333;--ed-surface:#383838;--ed-surface-hover:#444;--ed-text:#fff;--ed-muted:#b3b3b3;--ed-line:#444;--ed-line-strong:#5c5c5c;--ed-accent:#4fb8ff;--ed-accent-strong:#0d99ff;--ed-accent-hover:#0c8ce9;--ed-accent-soft:#244761;--ed-success:#85e0a3;--ed-warning:#ffcd29;--ed-danger:#fca397;--ed-frame-edge:#ffffff1f;--ed-shadow:0 5px 17px #00000073, 0 2px 7px #0000004d}.gg-editor-ui :is(.text-white,.text-gray-100,.text-gray-200,.text-gray-300):not([data-editor-preview] *){color:var(--ed-text)}.gg-editor-ui :is(.text-gray-400,.text-gray-500,.text-gray-600):not([data-editor-preview] *){color:var(--ed-muted)}.gg-editor-ui :is(.hover\:text-white:hover,.hover\:text-gray-200:hover):not([data-editor-preview] *){color:var(--ed-text)}.gg-editor-ui :is(.hover\:bg-\[\#444444\]:hover,.hover\:bg-\[\#383838\]:hover,.hover\:bg-white\/10:hover):not([data-editor-preview] *){background-color:var(--ed-surface-hover)}.gg-editor-ui :is(.text-sky-400,.text-\[\#7cc4ff\]):not([data-editor-preview] *){color:var(--ed-accent)}.gg-editor-ui :is(.text-red-400,.text-red-500):not([data-editor-preview] *){color:var(--ed-danger)}.gg-editor-ui :is(.bg-blue-500,.bg-blue-600,.bg-\[\#0d99ff\],.bg-green-600,.bg-purple-600,.bg-red-500,.bg-black\/90).text-white,.gg-editor-ui :is(.bg-blue-500,.bg-blue-600,.bg-\[\#0d99ff\],.bg-green-600,.bg-purple-600,.bg-red-500,.bg-black\/90) .text-white:not([data-editor-preview] *){color:#fff}.gg-editor-ui :is(.bg-\[\#0d99ff\]\/20,.bg-\[\#0d99ff\]\/15,.bg-\[\#0d99ff\]\/30):not([data-editor-preview] *){background-color:var(--ed-accent-soft)}.gg-editor-ui :is(.bg-white\/15,.bg-white\/10):not([data-editor-preview] *){background-color:var(--ed-line)}.gg-editor-ui :is(.shadow-lg,.shadow-xl,.shadow-2xl):not([data-editor-preview] *){box-shadow:var(--ed-shadow)}.gg-editor-ui :is([class*="text-[6px]"],[class*="text-[7px]"],[class*="text-[8px]"],[class*="text-[9px]"],[class*="text-[9.5px]"],[class*="text-[10px]"],[class*="text-[10.5px]"],[class*="text-[11px]"],[class*="text-[11.5px]"]):not([data-editor-preview] *){font-size:12px}.gg-editor-ui :is(button,input,select,textarea,a,[tabindex]):focus-visible{outline:2px solid var(--ed-accent);outline-offset:2px;box-shadow:none}.gg-editor-ui :is(input,textarea):not([data-editor-preview] *)::placeholder{color:var(--ed-muted);opacity:1}.gg-editor-ui .ed-icon-button,.gg-editor-ui .ed-button{border:1px solid var(--ed-line);border-radius:var(--ed-radius);height:36px;color:var(--ed-text);background:var(--ed-panel);white-space:nowrap;flex-shrink:0;justify-content:center;align-items:center;gap:8px;padding:0 12px;font-size:13px;font-weight:500;display:inline-flex}.gg-editor-ui .ed-icon-button{background:0 0;border-color:#0000;width:32px;height:32px;padding:0}.gg-editor-ui :is(.ed-button,.ed-icon-button):hover:not([data-editor-preview] *){background:var(--ed-surface-hover)}.gg-editor-ui :is(.ed-button,.ed-icon-button)[aria-pressed=true]:not([data-editor-preview] *){background:var(--ed-accent-soft);color:var(--ed-accent);border-color:var(--ed-accent)}.gg-editor-ui .ed-button-primary{background:var(--ed-accent-strong);color:#fff;border-color:#0000}.gg-editor-ui .ed-button-primary:hover{background:var(--ed-accent-hover)}.gg-editor-ui button:disabled{opacity:.45}.gg-editor-ui [data-editor-topbar]{gap:12px;height:56px;padding-inline:16px}.gg-editor-ui [data-topbar=title]{font-size:14px}.gg-editor-ui .ed-save-status{white-space:nowrap;color:var(--ed-muted);align-items:center;gap:8px;font-size:12px;display:inline-flex}.gg-editor-ui .ed-save-status[data-save-status=dirty]{color:var(--ed-warning)}.gg-editor-ui .ed-save-status[data-save-status=error]{color:var(--ed-danger)}.gg-editor-ui .ed-save-status[data-save-status=saved] svg{color:var(--ed-success)}.gg-editor-ui .ed-collab-presence{align-items:center;gap:10px;display:inline-flex}.gg-editor-ui .ed-collab-avatars{align-items:center;padding-left:4px;display:inline-flex}.gg-editor-ui .ed-collab-avatar{border:2px solid var(--ed-panel);color:#fff;cursor:pointer;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:26px;margin-left:-4px;padding:0;font-size:11px;font-weight:700;line-height:1;display:inline-flex}.gg-editor-ui .ed-collab-avatar:hover{transform:translateY(-1px)}.gg-editor-ui .ed-collab-avatar-self{cursor:default;box-shadow:0 0 0 1px var(--ed-line-strong);margin-left:4px}.gg-editor-ui .ed-collab-avatar-self:hover,.gg-editor-ui .ed-collab-avatar-more:hover{transform:none}.gg-editor-ui .ed-collab-avatar-more{background:var(--ed-panel-raised);color:var(--ed-text);cursor:default}.gg-editor-ui .ed-collab-bridge{white-space:nowrap;color:var(--ed-muted);align-items:center;gap:4px;font-size:12px;display:inline-flex}.gg-editor-ui .ed-collab-bridge-warn{color:var(--ed-warning)}.gg-editor-ui .ed-collab-bridge-alert{color:#fff;background:var(--ed-danger);border-radius:var(--ed-radius);padding:3px 8px;font-weight:600}.gg-editor-ui .ed-save-status[data-collab-status=synced] svg{color:var(--ed-success)}.gg-editor-ui .ed-save-status[data-collab-status=offline]{color:var(--ed-danger)}.gg-editor-ui .ed-save-status[data-collab-status=error]{color:var(--ed-danger);font-weight:600}.gg-editor-ui .ed-save-status[data-collab-pending]{color:var(--ed-warning)}.gg-editor-ui .ed-collab-dots{flex-shrink:0;align-items:center;gap:2px;display:inline-flex}.gg-editor-ui .ed-collab-dot{width:7px;height:7px;box-shadow:0 0 0 1px var(--ed-panel);border-radius:50%}.gg-editor-ui .ed-panel-heading{border-bottom:1px solid var(--ed-line);flex-shrink:0;align-items:center;gap:8px;height:48px;padding:0 16px;font-size:14px;font-weight:600;display:flex}.gg-editor-ui .ed-toolbar{border:1px solid var(--ed-line);background:var(--ed-panel-raised);color:var(--ed-text);box-shadow:var(--ed-shadow);border-radius:12px;padding:8px}.gg-editor-ui .ed-footer{border-top:1px solid var(--ed-line);background:var(--ed-panel);height:36px;color:var(--ed-muted);flex-shrink:0;justify-content:space-between;align-items:center;gap:16px;padding:0 16px;font-size:12px;display:flex}.gg-editor-ui .ed-footer-hint{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.gg-editor-ui .ed-empty{color:var(--ed-muted);flex-direction:column;align-items:flex-start;gap:12px;padding:24px;font-size:13px;line-height:1.7;display:flex}.gg-editor-ui .ed-empty strong{color:var(--ed-text);font-size:14px}@media (prefers-reduced-motion:reduce){.gg-editor-ui *,.gg-editor-ui :before,.gg-editor-ui :after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}.gg-editor-ui .ed-panel-tabs{border-bottom:1px solid var(--ed-line);background:var(--ed-panel);border-radius:0;flex-shrink:0;gap:4px;width:100%;height:48px;padding:8px;display:flex}.gg-editor-ui .ed-panel-tabs>button{flex:1;height:32px;font-size:12px}.gg-editor-ui .ed-panel-tabs>[data-state=active]{background:var(--ed-accent-soft);color:var(--ed-accent);box-shadow:none}.gg-editor-ui .ed-panel-tab-content{flex:1;min-height:0;margin:0;display:flex}.gg-editor-ui .ed-panel-tab-content[data-state=inactive]{display:none}.gg-editor-ui .ed-resize-handle{background-color:#0000;width:6px}.gg-editor-ui .ed-resize-handle:hover,.gg-editor-ui .ed-resize-handle:focus-visible{background-color:var(--ed-accent)}.gg-editor-ui .ed-layer-selected{box-shadow:inset 3px 0 var(--ed-accent)}.gg-editor-ui .ed-layer-selected :is(.text-white,.text-blue-100,.text-blue-200){color:var(--ed-accent)}.gg-editor-ui [data-property-panel] .ed-panel-heading{z-index:1;position:sticky;top:0}.gg-editor-ui [data-property-panel] .p-3{padding:0}.gg-editor-ui [data-property-panel] .p-3>*{padding-left:16px;padding-right:16px}.gg-editor-ui [data-property-panel] .p-3>.mb-3{min-height:44px;margin-bottom:0}.gg-editor-ui [data-property-panel] .p-3>[data-state]{border-top:1px solid var(--ed-line)}.gg-editor-ui [data-property-panel] .p-3>.ed-part-card{margin:0 16px 12px;padding:10px 12px}.gg-editor-ui [data-property-panel] [data-state]>button[data-state]{min-height:40px;color:var(--ed-text);border-top:0;border-radius:0;padding:0;font-size:13px;font-weight:600}.gg-editor-ui [data-property-panel] [data-state]>button[data-state]:hover{color:var(--ed-text);background:0 0}.gg-editor-ui [data-property-panel] [data-state]>button[data-state]>span:first-child>svg,.gg-editor-ui [data-property-panel] [data-state]>button[data-state]>svg:last-child{width:14px;height:14px;color:var(--ed-muted)}.gg-editor-ui [data-property-panel] [data-state]>div[data-state=open]{padding-bottom:16px}.gg-editor-ui [data-property-panel] label,.gg-editor-ui [data-property-panel] .ed-prop-label{color:var(--ed-muted);font-size:11px;font-weight:500;line-height:1.4}.gg-editor-ui [data-property-panel] :is(input:not([type=color]):not([type=checkbox]):not([type=range]),select,[role=combobox]):not(.group *){background:var(--ed-surface);height:32px;min-height:32px;color:var(--ed-text);box-shadow:none;border-radius:6px;padding-left:8px;padding-right:8px;font-size:12px;border:1px solid #0000!important}.gg-editor-ui [data-property-panel] :is(input:not([type=color]):not([type=checkbox]):not([type=range]),select,[role=combobox]):not(.group *):hover{border-color:var(--ed-line-strong)!important}.gg-editor-ui [data-property-panel] :is(input:not([type=color]):not([type=checkbox]):not([type=range]),select,[role=combobox]):not(.group *):focus-visible,.gg-editor-ui [data-property-panel] :is(input:not([type=color]):not([type=checkbox]):not([type=range]),select,[role=combobox]):not(.group *):focus-within{box-shadow:none;outline:none;border-color:var(--ed-accent)!important}.gg-editor-ui [data-property-panel] .group.h-5{background:var(--ed-surface);border-color:#0000;border-radius:6px;min-width:40px;height:28px}.gg-editor-ui [data-property-panel] .group.h-5:hover{border-color:var(--ed-line-strong)}.gg-editor-ui [data-property-panel] .group.h-5:focus-within{border-color:var(--ed-accent)}.gg-editor-ui [data-property-panel] .group.h-5 input{color:var(--ed-text);font-size:12px}.gg-editor-ui [data-property-panel] .group.h-5 input:focus{box-shadow:none}.gg-editor-ui [data-property-panel] button.h-7.w-7,.gg-editor-ui [data-property-panel] button.h-7{border-radius:6px;min-width:32px;height:32px}.gg-editor-ui [data-property-panel] button.h-7.w-7 svg{width:14px;height:14px}.gg-editor-ui [data-property-panel] button[data-state]:not([role=checkbox]):not([role=switch]){min-height:32px}.gg-editor-ui [data-property-panel] button[role=checkbox]{border:1px solid var(--ed-line-strong);background:var(--ed-surface);border-radius:4px;width:16px;height:16px;min-height:16px}.gg-editor-ui [data-property-panel] button[role=checkbox][data-state=checked]{background:var(--ed-accent-strong);border-color:var(--ed-accent-strong);color:#fff}.gg-editor-ui [data-property-panel] input[type=color]{border:1px solid var(--ed-line-strong);border-radius:6px;width:28px;height:28px;padding:0}.gg-editor-ui [data-property-panel] .grid.grid-cols-2{gap:8px}.gg-editor-ui [data-property-panel] .space-y-2>*+*,.gg-editor-ui [data-property-panel] .space-y-3>*+*{margin-top:10px}.gg-editor-ui[data-editor-surface=popup],.gg-editor-ui[data-editor-surface=dialog],.gg-editor-ui[data-editor-surface=tooltip]{color:var(--ed-text);background-color:var(--ed-panel-raised);border-color:var(--ed-line);box-shadow:var(--ed-shadow);z-index:10000;border-radius:12px}.gg-editor-ui[data-editor-surface=popup]{max-width:calc(100vw - 24px)}.gg-editor-ui[data-editor-surface=dialog]{max-width:min(var(--container-7xl,80rem), calc(100vw - 48px));border-radius:16px;max-height:calc(100dvh - 48px);overflow-y:auto}.gg-editor-ui[data-editor-surface=dialog].max-w-lg{max-width:min(32rem,100vw - 48px)}.gg-editor-ui[data-editor-surface=overlay]{z-index:9999;background:#10182766}.gg-editor-ui[data-editor-surface=tooltip]{border:1px solid var(--ed-line);font-size:12px}.gg-editor-ui [role=menuitem],.gg-editor-ui [role=menuitemcheckbox],.gg-editor-ui [role=menuitemradio]{min-height:32px;font-size:13px}.gg-editor-ui :is([role=menuitem],[role=menuitemcheckbox],[role=menuitemradio],[role=option])[data-highlighted]:not([data-editor-preview] *){background-color:var(--ed-accent-soft);color:var(--ed-accent)}.gg-editor-ui[data-editor-surface=dialog]>button:last-child{justify-content:center;align-items:center;min-width:28px;min-height:28px;display:flex}.gg-editor-ui .ed-comments-panel{background:var(--ed-surface)}.gg-editor-ui .ed-comment-thread p{overflow-wrap:anywhere}.gg-editor-ui .ed-comment-thread button{min-height:28px}.gg-editor-ui .ed-comments-panel textarea{border-radius:8px;min-height:88px;padding:12px;line-height:1.6}.gg-editor-ui .ed-comment-thread>div:first-child>button{min-width:28px}.gg-editor-ui .ed-ribbon [role=tab]{height:40px;padding-inline:12px;font-size:13px}.gg-editor-ui .ed-ribbon [role=tabpanel]{gap:4px;padding-inline:16px}.gg-editor-ui .ed-ribbon [role=tabpanel] button,.gg-editor-ui .ed-ribbon [role=tabpanel] input:not([type=color]),.gg-editor-ui .ed-ribbon [role=tabpanel] select{min-height:28px}.gg-editor-ui .ed-ribbon [role=tab][data-state=active]{color:var(--ed-accent)}.gg-editor-ui :is(input:not([type=color]),textarea,select):not([data-editor-preview] *){border-color:var(--ed-line-strong)!important}.gg-editor-ui .ed-frame-shell{background:#fff}.gg-editor-ui .ed-frame-label-row{align-items:center;gap:2px;max-width:100%;height:20px;display:inline-flex;position:absolute;left:0}.gg-editor-ui .ed-frame-label{white-space:nowrap;min-width:0;height:20px;color:var(--ed-muted);pointer-events:auto;cursor:pointer;text-overflow:ellipsis;border-radius:4px;align-items:center;gap:6px;padding:0 6px 0 4px;font-size:11px;line-height:1;display:inline-flex;overflow:hidden}.gg-editor-ui .ed-frame-label-link{width:18px;height:18px;color:var(--ed-muted);pointer-events:auto;opacity:0;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;transition:opacity .12s;display:inline-flex}.gg-editor-ui .ed-frame-label-link svg{width:12px;height:12px}.gg-editor-ui .ed-frame-label-row:hover .ed-frame-label-link,.gg-editor-ui .ed-frame-label-active+.ed-frame-label-link,.gg-editor-ui .ed-frame-label-link:focus-visible{opacity:1}.gg-editor-ui .ed-frame-label-link:hover{color:var(--ed-text);background:var(--ed-panel);box-shadow:0 0 0 1px var(--ed-line)}.gg-editor-ui .ed-part-card{border:1px solid #7b61ff}@supports (color:color-mix(in lab, red, red)){.gg-editor-ui .ed-part-card{border:1px solid color-mix(in srgb, #7b61ff 45%, var(--ed-line))}}.gg-editor-ui .ed-part-card{background:#7b61ff}@supports (color:color-mix(in lab, red, red)){.gg-editor-ui .ed-part-card{background:color-mix(in srgb, #7b61ff 8%, var(--ed-panel))}}.gg-editor-ui .ed-part-card{color:var(--ed-text)}.gg-editor-ui .ed-part-accent{color:#7b61ff}.gg-editor-ui[data-editor-theme=dark] .ed-part-accent{color:#a99cff}.gg-editor-ui .ed-part-note{color:var(--ed-muted)}.gg-editor-ui .ed-frame-label:hover{color:var(--ed-text);background:var(--ed-panel);box-shadow:0 0 0 1px var(--ed-line)}.gg-editor-ui .ed-frame-label-active,.gg-editor-ui .ed-frame-label-active:hover{color:var(--ed-accent);font-weight:600}.gg-editor-ui .ed-frame-label-index{font-variant-numeric:tabular-nums;opacity:.7}.gg-editor-ui .ed-frame-label-title{text-overflow:ellipsis;overflow:hidden}.gg-editor-ui .ed-frame-label-dirty{background:var(--ed-warning);border-radius:50%;flex-shrink:0;width:6px;height:6px}.gg-editor-ui .ed-frame-label-loading{border:1.5px solid var(--ed-line-strong);border-top-color:var(--ed-accent);border-radius:50%;flex-shrink:0;width:9px;height:9px;animation:.8s linear infinite ed-spin}@keyframes ed-spin{to{transform:rotate(360deg)}}.gg-editor-ui .ed-frame-ring{pointer-events:none;border-radius:1px;position:absolute;top:0;left:0}.gg-editor-ui .ed-canvas-marquee{z-index:20;pointer-events:none;border:1px solid var(--ed-accent);background:var(--ed-accent);position:absolute}@supports (color:color-mix(in lab, red, red)){.gg-editor-ui .ed-canvas-marquee{background:color-mix(in srgb, var(--ed-accent) 12%, transparent)}}.gg-editor-ui .ed-frame-ring-active{box-shadow:0 0 0 1.5px var(--ed-accent-strong)}.gg-editor-ui .ed-frame-ring-hover{box-shadow:0 0 0 1px var(--ed-accent-strong);opacity:.55}.gg-editor-ui [data-canvas-preview-image="1"] [data-page-preview][data-image-ready="1"] iframe{visibility:hidden}.gg-editor-ui .ed-frame-skeleton{background:#fff;flex-direction:column;gap:3%;padding:6% 8%;display:flex;position:absolute;inset:0}.gg-editor-ui .ed-frame-skeleton-bar{background:#eceff3;border-radius:999px;height:2.5%;min-height:8px;display:block}.gg-editor-ui .ed-frame-skeleton-note{color:#9aa3b2;font-size:40px}.gg-editor-ui [data-canvas-rulers] canvas{display:block}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@keyframes spin{to{transform:rotate(360deg)}}
|
package/package.json
CHANGED
|
@@ -273,7 +273,7 @@ export function EditorCanvas() {
|
|
|
273
273
|
marqueeGeomRef,
|
|
274
274
|
});
|
|
275
275
|
|
|
276
|
-
//
|
|
276
|
+
// Alt(⌥)+ クリックでリンク先へ移る(選択の mousedown には手を出さず、クリックが確定してから移る)
|
|
277
277
|
const { setupLinkNavigation } = useLinkNavigation();
|
|
278
278
|
|
|
279
279
|
// マーキー選択
|
|
@@ -541,7 +541,7 @@ export function EditorCanvas() {
|
|
|
541
541
|
|
|
542
542
|
// 選択リスナー(mousedown, dblclick)
|
|
543
543
|
cleanupFunctions.push(setupSelectionListeners(iframeDoc));
|
|
544
|
-
//
|
|
544
|
+
// Alt(⌥)+ クリックでリンク先へ(ページ・アンカー・外部サイト)
|
|
545
545
|
cleanupFunctions.push(setupLinkNavigation(iframeDoc));
|
|
546
546
|
// テキスト編集中の範囲選択に、マーカー・太字のツールバーを出す
|
|
547
547
|
cleanupFunctions.push(setupInlineFormatToolbar(iframeDoc));
|
|
@@ -7,7 +7,9 @@ import { Popover, PopoverContent, PopoverTrigger } from '../../components/ui/pop
|
|
|
7
7
|
|
|
8
8
|
export function EditorFooter() {
|
|
9
9
|
const { activeTool, editorMode, selectedElement, selectedElementIds } = useEditorContext();
|
|
10
|
-
const
|
|
10
|
+
const isMac = typeof navigator !== 'undefined' && /Mac|iPhone|iPad/.test(navigator.platform);
|
|
11
|
+
const cmd = isMac ? '⌘' : 'Ctrl+';
|
|
12
|
+
const alt = isMac ? '⌥' : 'Alt+';
|
|
11
13
|
const hint = activeTool === 'move' ? 'ドラッグで紙面を移動 · V で選択に戻る'
|
|
12
14
|
: activeTool === 'scale' ? 'ドラッグで拡大・縮小 · V で選択に戻る'
|
|
13
15
|
: activeTool === 'comment' ? '紙面をドラッグして範囲を指定 · クリックで点 · Esc で選択に戻る'
|
|
@@ -21,6 +23,7 @@ export function EditorFooter() {
|
|
|
21
23
|
['保存', `${cmd}S`], ['複製', `${cmd}D`],
|
|
22
24
|
['全体表示 / 100% / 選択範囲', `${cmd}0 / ${cmd}1 / ${cmd}2`],
|
|
23
25
|
['複数選択', 'Shift+クリック'], ['最下層の要素を選択', `${cmd}クリック`],
|
|
26
|
+
['リンク先へ移動', `${alt}クリック`],
|
|
24
27
|
['選択・入力を終了', 'Esc'],
|
|
25
28
|
];
|
|
26
29
|
return (
|
|
@@ -69,6 +69,7 @@ import { buildFilterString, buildTransformString } from "../utils/style-utils";
|
|
|
69
69
|
import { useEditorContext } from "../EditorContext";
|
|
70
70
|
import { useElementActions, useEditorColors, useInlineTextSelection } from "../hooks";
|
|
71
71
|
import { MIXED } from "../utils/inline-text-style";
|
|
72
|
+
import { borderWidthStyles } from "../utils/border-sides";
|
|
72
73
|
import { FONT_WEIGHTS } from "../constants";
|
|
73
74
|
import type { PanelSections, SelectedElementInfo } from "../types";
|
|
74
75
|
import {
|
|
@@ -2571,7 +2572,8 @@ export const EditorPropertyPanel = memo(function EditorPropertyPanel() {
|
|
|
2571
2572
|
const needsStyleChange = selectedElement.borderStyle === "none" &&
|
|
2572
2573
|
!val.startsWith('var(') && parseFloat(val) > 0;
|
|
2573
2574
|
updateElementStyle({
|
|
2574
|
-
|
|
2575
|
+
// 片側だけの線(border-l-2 など)は、その辺の線幅だけを変える(四辺の枠にしない)
|
|
2576
|
+
...borderWidthStyles(val, selectedElement.borderSides),
|
|
2575
2577
|
...(needsStyleChange ? { borderStyle: "solid" } : {}),
|
|
2576
2578
|
});
|
|
2577
2579
|
}}
|
|
@@ -2613,12 +2615,10 @@ export const EditorPropertyPanel = memo(function EditorPropertyPanel() {
|
|
|
2613
2615
|
)}
|
|
2614
2616
|
onChange={(config) => {
|
|
2615
2617
|
if (config.type === "solid" && config.color) {
|
|
2618
|
+
// スタイルは線が無いときだけ実線にする(今のスタイルを書き直さない)
|
|
2616
2619
|
updateElementStyle({
|
|
2617
2620
|
borderColor: config.color,
|
|
2618
|
-
borderStyle:
|
|
2619
|
-
selectedElement.borderStyle === "none"
|
|
2620
|
-
? "solid"
|
|
2621
|
-
: selectedElement.borderStyle,
|
|
2621
|
+
...(selectedElement.borderStyle === "none" ? { borderStyle: "solid" } : {}),
|
|
2622
2622
|
});
|
|
2623
2623
|
} else if (config.type === "none") {
|
|
2624
2624
|
updateElementStyle({ borderStyle: "none" });
|
|
@@ -2627,10 +2627,7 @@ export const EditorPropertyPanel = memo(function EditorPropertyPanel() {
|
|
|
2627
2627
|
onVariableSelect={(varRef) => {
|
|
2628
2628
|
updateElementStyle({
|
|
2629
2629
|
borderColor: varRef,
|
|
2630
|
-
borderStyle:
|
|
2631
|
-
selectedElement.borderStyle === "none"
|
|
2632
|
-
? "solid"
|
|
2633
|
-
: selectedElement.borderStyle,
|
|
2630
|
+
...(selectedElement.borderStyle === "none" ? { borderStyle: "solid" } : {}),
|
|
2634
2631
|
});
|
|
2635
2632
|
}}
|
|
2636
2633
|
presetColors={colorPresets}
|
|
@@ -46,6 +46,7 @@ import { moveSlide, deleteSlide, duplicateSlide, updateSlideMeta, insertSlide }
|
|
|
46
46
|
import { startCleanup } from '../../../components/SaveNote';
|
|
47
47
|
import { unresolvedCount } from './PptComments';
|
|
48
48
|
import { enterCropMode, type CropSession } from '../../utils/crop-mode';
|
|
49
|
+
import { borderWidthStyles, summarizeBorder } from '../../utils/border-sides';
|
|
49
50
|
import { useGoogleFonts } from '../../hooks/useGoogleFonts';
|
|
50
51
|
import { DeckSlideRender } from '../../../components/DeckSlideRender';
|
|
51
52
|
const PptDesignProposals = lazy(() => import('./PptDesignProposals').then((m) => ({ default: m.PptDesignProposals })));
|
|
@@ -270,7 +271,11 @@ function Dropdown({
|
|
|
270
271
|
const PAINT_PROPS = new Set([
|
|
271
272
|
'backgroundColor', 'background', 'backgroundImage', 'clipPath', 'borderRadius',
|
|
272
273
|
'border', 'borderColor', 'borderWidth', 'borderStyle',
|
|
274
|
+
// 辺ごとの線も中身の図形へ(片側だけの線の読み書き。上の辺だけだと、枠の右・下・左を枠の外側から読んでいた)
|
|
273
275
|
'borderTopWidth', 'borderTopStyle', 'borderTopColor',
|
|
276
|
+
'borderRightWidth', 'borderRightStyle', 'borderRightColor',
|
|
277
|
+
'borderBottomWidth', 'borderBottomStyle', 'borderBottomColor',
|
|
278
|
+
'borderLeftWidth', 'borderLeftStyle', 'borderLeftColor',
|
|
274
279
|
]);
|
|
275
280
|
|
|
276
281
|
/** リボンが読む computed style の名前 → 選んだ文字の見た目(InlineTextSummary)の項目 */
|
|
@@ -1264,13 +1269,22 @@ export function PptRibbon({
|
|
|
1264
1269
|
|
|
1265
1270
|
/** 枠線の色/太さを変えるとき、枠線が無ければ実線を立てる(PowerPointの挙動) */
|
|
1266
1271
|
const ensureBorder = useCallback((styles: Record<string, string>) => {
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
const
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
+
// 片側だけの線(border-l-2 など)は上の辺が 0 なので、上だけ見ると「線が無い」と判定して
|
|
1273
|
+
// 四辺に 2px を足していた。辺ごとに見て、線が見えていれば足さず、太さはその辺だけに当てる
|
|
1274
|
+
const first = targets()[0];
|
|
1275
|
+
const border = summarizeBorder({ getPropertyValue: readComputed }, first ? paintTarget(first) : null);
|
|
1276
|
+
let out: Record<string, string> = { ...styles };
|
|
1277
|
+
if ('borderWidth' in out && border.sides) {
|
|
1278
|
+
const { borderWidth, ...rest } = out;
|
|
1279
|
+
out = { ...rest, ...borderWidthStyles(borderWidth, border.sides) };
|
|
1280
|
+
}
|
|
1281
|
+
// 線が無ければ 2px を立てる(片側だけの線を 0 にしていたら、その辺に)
|
|
1282
|
+
if (!('borderWidth' in styles) && (!Number.isFinite(border.width) || border.width === 0)) {
|
|
1283
|
+
Object.assign(out, borderWidthStyles('2px', border.sides));
|
|
1284
|
+
}
|
|
1285
|
+
if (!('borderStyle' in out) && (border.style === 'none' || border.style === '')) out.borderStyle = 'solid';
|
|
1272
1286
|
apply(out);
|
|
1273
|
-
}, [readComputed, apply]);
|
|
1287
|
+
}, [readComputed, apply, targets]);
|
|
1274
1288
|
|
|
1275
1289
|
const borderRadiusPx = useMemo(() => {
|
|
1276
1290
|
const v = parseFloat(readComputed('border-radius'));
|
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
} from '../../../components/ui/collapsible';
|
|
17
17
|
import { Circle, ChevronRight } from 'lucide-react';
|
|
18
18
|
import { rgbToHex } from '../../utils/style-utils';
|
|
19
|
+
import { borderWidthStyles } from '../../utils/border-sides';
|
|
19
20
|
import { BORDER_STYLES } from '../../constants';
|
|
20
21
|
import type { SelectedElementInfo } from '../../types';
|
|
21
22
|
|
|
@@ -52,7 +53,8 @@ export function BorderSection({
|
|
|
52
53
|
value={Math.round(selectedElement.borderWidth)}
|
|
53
54
|
onChange={(e) =>
|
|
54
55
|
onStyleChange({
|
|
55
|
-
|
|
56
|
+
// 片側だけの線は、その辺の線幅だけを変える
|
|
57
|
+
...borderWidthStyles(`${e.target.value}px`, selectedElement.borderSides),
|
|
56
58
|
borderStyle:
|
|
57
59
|
selectedElement.borderStyle === 'none'
|
|
58
60
|
? 'solid'
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Alt(⌥)+ クリックでリンク先へ移る(utils/link-navigation.ts)の、エディタ側の行き先。
|
|
3
3
|
*
|
|
4
4
|
* ページの切替は、ページ一覧で切り替えるときと同じ経路を通す
|
|
5
5
|
* (未保存の変更は FrontendVisualEditor.handleContentChange が保存してから移る):
|
|
@@ -122,7 +122,7 @@ export function useLinkNavigation() {
|
|
|
122
122
|
[revealAnchor],
|
|
123
123
|
);
|
|
124
124
|
|
|
125
|
-
/** 紙面に
|
|
125
|
+
/** 紙面に Alt(⌥)+ クリックの移動を付ける。戻り値は後始末 */
|
|
126
126
|
const setupLinkNavigation = useCallback(
|
|
127
127
|
(iframeDoc: Document) => {
|
|
128
128
|
const detach = attachLinkNavigation(iframeDoc, {
|
package/src/editor/types.ts
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
* (スライド、ページ、コンポーネント等で共用)
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
+
import type { BorderSide } from './utils/border-sides';
|
|
7
|
+
|
|
6
8
|
// 再エクスポート(既存の型)
|
|
7
9
|
export type {
|
|
8
10
|
EditorTool,
|
|
@@ -184,7 +186,9 @@ export interface SelectedElementInfo {
|
|
|
184
186
|
rawFontSize?: string; // font-size
|
|
185
187
|
rawLineHeight?: string; // line-height
|
|
186
188
|
rawLetterSpacing?: string; // letter-spacing
|
|
187
|
-
rawBorderWidth?: string; // border-width
|
|
189
|
+
rawBorderWidth?: string; // border-width(片側だけの線ならその辺の値)
|
|
190
|
+
/** 線が見えている辺が 1〜3 辺のときだけ、その辺(utils/border-sides.ts)。線幅の変更をその辺だけに当てる */
|
|
191
|
+
borderSides?: BorderSide[];
|
|
188
192
|
rawGap?: string; // gap (flexbox/grid)
|
|
189
193
|
rawLeft?: string; // left (position)
|
|
190
194
|
rawTop?: string; // top (position)
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 片側だけの線(`border-l-2` など)を、右パネル・リボンの「線」の欄で扱う。
|
|
3
|
+
*
|
|
4
|
+
* 欄は 1 本の線幅・スタイル・色しか持たない。以前は computed の `border-width` を
|
|
5
|
+
* parseFloat していたので、左だけ 2px の線は「0px」、スタイルは「none none none solid」と読めず、
|
|
6
|
+
* 線幅を変えると `border-[3px]` で四辺の枠になっていた。
|
|
7
|
+
* 線が見えている辺が 1〜3 辺なら、その辺の値を出し、線幅の変更もその辺だけに当てる。
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { isBorderWidthClass, isZeroBorderWidthClass, type SideLetter } from './tailwind-utils';
|
|
11
|
+
|
|
12
|
+
export type BorderSide = 'top' | 'right' | 'bottom' | 'left';
|
|
13
|
+
|
|
14
|
+
export const BORDER_SIDES: readonly BorderSide[] = ['top', 'right', 'bottom', 'left'];
|
|
15
|
+
|
|
16
|
+
const SIDE_WIDTH_PROPERTY: Record<BorderSide, string> = {
|
|
17
|
+
top: 'borderTopWidth',
|
|
18
|
+
right: 'borderRightWidth',
|
|
19
|
+
bottom: 'borderBottomWidth',
|
|
20
|
+
left: 'borderLeftWidth',
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export interface BorderSummary {
|
|
24
|
+
width: number;
|
|
25
|
+
style: string;
|
|
26
|
+
color: string;
|
|
27
|
+
/**
|
|
28
|
+
* 線が見えている辺が 1〜3 辺のときだけ、その辺(上・右・下・左の順)。四辺とも・線なしは undefined。
|
|
29
|
+
* 線が見えていなくても、要素自身が 1〜3 辺だけに線幅を指定していればその辺(declaredBorderSides)
|
|
30
|
+
*/
|
|
31
|
+
sides?: BorderSide[];
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* 線が見えていないとき(片側だけの線を線幅 0 にした・スタイルを「なし」にした)の辺を、要素自身の指定から読む。
|
|
36
|
+
* computed では辺が分からず、次に線幅を入れると四辺の枠になっていた(実エディタで確認)。
|
|
37
|
+
* インラインの辺ごとの線幅(border-left-width)と、辺の太さのクラス(border-l-0 / border-x-2)を見る。
|
|
38
|
+
* 四辺まとめての指定(インラインの border-width・border / border-2 クラス)があれば四辺とみなす
|
|
39
|
+
*/
|
|
40
|
+
export function declaredBorderSides(element: Element): BorderSide[] | undefined {
|
|
41
|
+
const inline = (element as HTMLElement).style;
|
|
42
|
+
const inlineSides = inline ? BORDER_SIDES.filter((side) => inline.getPropertyValue(`border-${side}-width`) !== '') : [];
|
|
43
|
+
if (inlineSides.length === BORDER_SIDES.length) return undefined;
|
|
44
|
+
if (inline?.getPropertyValue('border-width')) return undefined;
|
|
45
|
+
const classes = (element.getAttribute('class') || '').split(/\s+/).filter(Boolean);
|
|
46
|
+
// 四辺まとめての太さ(border / border-2。border-0 は除く)があれば、辺ごとの指定があっても四辺とみなす
|
|
47
|
+
if (classes.some((cls) => isBorderWidthClass(cls, '') && !isZeroBorderWidthClass(cls))) return undefined;
|
|
48
|
+
// 太さ 0 のクラス(border-b-0 など)は「線を消す指定」なので、辺を名乗るものとして数えない。
|
|
49
|
+
// 欄で線幅を 0 にしたときは、同時に書くインラインの辺ごとの線幅(上)で辺が分かる
|
|
50
|
+
const has = (letter: SideLetter) =>
|
|
51
|
+
classes.some((cls) => isBorderWidthClass(cls, letter) && !isZeroBorderWidthClass(cls));
|
|
52
|
+
const classSides: BorderSide[] = [];
|
|
53
|
+
// s / e は書字方向の始め・終わり、bs / be はブロック方向。LTR の横書きを既定として当てる
|
|
54
|
+
if (has('t') || has('y') || has('bs')) classSides.push('top');
|
|
55
|
+
if (has('r') || has('x') || has('e')) classSides.push('right');
|
|
56
|
+
if (has('b') || has('y') || has('be')) classSides.push('bottom');
|
|
57
|
+
if (has('l') || has('x') || has('s')) classSides.push('left');
|
|
58
|
+
// その辺を 0 にするクラス(border-x-2 border-l-0 の左)は、辺から外す
|
|
59
|
+
const zero = (letter: SideLetter) =>
|
|
60
|
+
classes.some((cls) => isBorderWidthClass(cls, letter) && isZeroBorderWidthClass(cls));
|
|
61
|
+
const zeroSides = new Set<BorderSide>();
|
|
62
|
+
if (zero('t') || zero('y') || zero('bs')) zeroSides.add('top');
|
|
63
|
+
if (zero('r') || zero('x') || zero('e')) zeroSides.add('right');
|
|
64
|
+
if (zero('b') || zero('y') || zero('be')) zeroSides.add('bottom');
|
|
65
|
+
if (zero('l') || zero('x') || zero('s')) zeroSides.add('left');
|
|
66
|
+
const sides = BORDER_SIDES.filter(
|
|
67
|
+
(side) => inlineSides.includes(side) || (classSides.includes(side) && !zeroSides.has(side)),
|
|
68
|
+
);
|
|
69
|
+
return sides.length > 0 && sides.length < BORDER_SIDES.length ? sides : undefined;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* computed style(`getPropertyValue` を持つもの)から、「線」の欄に出す値。
|
|
74
|
+
* element を渡すと、線が見えていないときに要素自身の指定から辺を読む(declaredBorderSides)
|
|
75
|
+
*/
|
|
76
|
+
export function summarizeBorder(
|
|
77
|
+
style: Pick<CSSStyleDeclaration, 'getPropertyValue'>,
|
|
78
|
+
element?: Element | null,
|
|
79
|
+
): BorderSummary {
|
|
80
|
+
const perSide = BORDER_SIDES.map((side) => ({
|
|
81
|
+
side,
|
|
82
|
+
width: parseFloat(style.getPropertyValue(`border-${side}-width`)) || 0,
|
|
83
|
+
style: style.getPropertyValue(`border-${side}-style`),
|
|
84
|
+
color: style.getPropertyValue(`border-${side}-color`),
|
|
85
|
+
}));
|
|
86
|
+
const shown = perSide.filter((s) => s.width > 0 && s.style !== 'none' && s.style !== 'hidden');
|
|
87
|
+
if (shown.length === 0 || shown.length === BORDER_SIDES.length) {
|
|
88
|
+
// 四辺とも・線なしは今までどおり(省略形の値)
|
|
89
|
+
const sides = shown.length === 0 && element ? declaredBorderSides(element) : undefined;
|
|
90
|
+
return {
|
|
91
|
+
width: parseFloat(style.getPropertyValue('border-width')) || 0,
|
|
92
|
+
style: sides ? style.getPropertyValue(`border-${sides[0]}-style`) : style.getPropertyValue('border-style'),
|
|
93
|
+
color: sides ? style.getPropertyValue(`border-${sides[0]}-color`) : style.getPropertyValue('border-color'),
|
|
94
|
+
...(sides ? { sides } : {}),
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
const first = shown[0];
|
|
98
|
+
return { width: first.width, style: first.style, color: first.color, sides: shown.map((s) => s.side) };
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/** 線幅の変更。片側だけの線なら、その辺の線幅(borderLeftWidth など)にする */
|
|
102
|
+
export function borderWidthStyles(value: string, sides?: readonly BorderSide[]): Record<string, string> {
|
|
103
|
+
if (!sides || sides.length === 0 || sides.length === BORDER_SIDES.length) return { borderWidth: value };
|
|
104
|
+
const out: Record<string, string> = {};
|
|
105
|
+
for (const side of sides) out[SIDE_WIDTH_PROPERTY[side]] = value;
|
|
106
|
+
return out;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/** その辺の線幅の CSS プロパティ名(kebab)。インラインの生値を読むときに使う */
|
|
110
|
+
export function borderSideWidthCss(side: BorderSide): string {
|
|
111
|
+
return `border-${side}-width`;
|
|
112
|
+
}
|
|
@@ -676,6 +676,11 @@ export function convertToAbsolutePositioning(iframeDoc: Document): number {
|
|
|
676
676
|
|
|
677
677
|
// 1. まず全要素の現在の位置・サイズをキャプチャ(インライン要素は除外)
|
|
678
678
|
const captures: ElementCapture[] = [];
|
|
679
|
+
// 変換しないインライン要素の、変換前の位置(自己検証で使う)。
|
|
680
|
+
// 変換しなかった要素は流れの中に残るので、ブロックの兄弟が絶対配置で流れから抜けると
|
|
681
|
+
// その分だけ上へ詰まる。例: <td><div>見出し</div><span class="mt-[10px] inline-block">ラベル</span></td>
|
|
682
|
+
// で見出しだけが抜け、ラベルが見出しに重なる
|
|
683
|
+
const skippedInline: { element: HTMLElement; rect: DOMRect }[] = [];
|
|
679
684
|
|
|
680
685
|
editableElements.forEach((el) => {
|
|
681
686
|
const element = el as HTMLElement;
|
|
@@ -694,6 +699,7 @@ export function convertToAbsolutePositioning(iframeDoc: Document): number {
|
|
|
694
699
|
|
|
695
700
|
// インライン要素はスキップ(ただし flex/grid アイテムは除く)
|
|
696
701
|
if (!isFlexOrGridItem && isInlineElement(element, computedStyle)) {
|
|
702
|
+
skippedInline.push({ element, rect: element.getBoundingClientRect() });
|
|
697
703
|
return;
|
|
698
704
|
}
|
|
699
705
|
|
|
@@ -900,11 +906,21 @@ export function convertToAbsolutePositioning(iframeDoc: Document): number {
|
|
|
900
906
|
const overY = element.scrollHeight - element.clientHeight > 2;
|
|
901
907
|
return (overX || overY) && element.getAttribute('data-gg-pre-overflow') !== 'true';
|
|
902
908
|
});
|
|
903
|
-
|
|
909
|
+
// 変換しなかったインライン要素も、流れの中で動いていないかを見る。
|
|
910
|
+
// 変換した要素だけを比べていたため、ブロックの兄弟が抜けて詰まったラベルを見逃し、
|
|
911
|
+
// 等倍で採寸が正確なキャンバス表示でだけ崩れた姿が確定していた
|
|
912
|
+
// (1 枚表示は縮小による端数で別の要素がずれ、たまたま巻き戻っていた)
|
|
913
|
+
const movedInline = skippedInline.filter(({ element, rect }) => {
|
|
914
|
+
const now = element.getBoundingClientRect();
|
|
915
|
+
return Math.abs(now.left - rect.left) > 1.5 || Math.abs(now.top - rect.top) > 1.5;
|
|
916
|
+
});
|
|
917
|
+
if (moved.length > 0 || movedInline.length > 0) {
|
|
904
918
|
console.warn(
|
|
905
919
|
'[convertToAbsolutePositioning] 変換で',
|
|
906
920
|
moved.length,
|
|
907
|
-
'
|
|
921
|
+
'要素がずれた・変換しないインライン要素が',
|
|
922
|
+
movedInline.length,
|
|
923
|
+
'個動いたため巻き戻します(採寸タイミング、または流れに残る要素が詰まった可能性)',
|
|
908
924
|
);
|
|
909
925
|
captures.forEach(({ element, prevStyle }) => {
|
|
910
926
|
if (prevStyle == null) element.removeAttribute('style');
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Alt(Mac は ⌥ Option)+ クリックで、紙面の中のリンク(`<a href>`)の先へ移る。
|
|
3
3
|
*
|
|
4
4
|
* - 同じサイトのページ(contentList[].href と照らし合わせる) … そのページを編集中にする
|
|
5
5
|
* - 同じページのアンカー(`#id`) … その要素が見える位置へ紙面を移す
|
|
@@ -7,19 +7,27 @@
|
|
|
7
7
|
* - `mailto:` / `tel:` / `javascript:` など … 何もしない
|
|
8
8
|
* - ページ一覧に無い同じオリジンの URL … 短く知らせる
|
|
9
9
|
*
|
|
10
|
-
* [
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* ⌘
|
|
14
|
-
*
|
|
10
|
+
* [⌘ / Ctrl ではなく Alt にした理由]
|
|
11
|
+
* 0.7.0 では ⌘ / Ctrl + クリックで移っていたが、⌘ / Ctrl + クリックはレイヤーパネルでは
|
|
12
|
+
* 「選択に足す・外す」(EditorLayerPanel)、紙面では「最深要素を選ぶ」で、複数選択のつもりの
|
|
13
|
+
* ⌘ クリックがリンクの上だとページ移動になった。紙面のクリックで Alt が空いている:
|
|
14
|
+
* Alt の既存の意味はホバーの距離メジャー(useAltMeasure、mousemove だけ)・中心からのリサイズ
|
|
15
|
+
* (ハンドルのドラッグ)・ズームツールの縮小(zoom-tool の間。下で止める)で、クリックには無い。
|
|
16
|
+
*
|
|
17
|
+
* [紙面のクリックとの両立]
|
|
18
|
+
* useElementSelection の mousedown は Alt を見ない(Alt + クリックは素のクリックと同じ選択)。
|
|
19
|
+
* Alt + ドラッグは移動、Alt + ダブルクリックは素のダブルクリック(潜る・テキスト編集)。
|
|
20
|
+
* 押した瞬間にはどれになるか決められないので、ここは mousedown で候補を覚えるだけにして
|
|
21
|
+
* 選択には手を出さず、
|
|
15
22
|
* - 動かさずに離した(ドラッグではない)
|
|
16
|
-
* -
|
|
23
|
+
* - ⌘ / Ctrl / Shift を押していない(⌘ + Alt + クリックは最深要素を選ぶだけで移らない)
|
|
17
24
|
* - 2 回目の mousedown(ダブルクリック)が LINK_NAV_DELAY_MS 以内に来なかった
|
|
18
25
|
* - 押した点がテキスト編集中の要素の中ではない
|
|
19
|
-
*
|
|
26
|
+
* ときだけ移る。
|
|
20
27
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
28
|
+
* Alt + クリックのリンクの既定の動作は、ブラウザによってはダウンロード(Chromium で実測)。
|
|
29
|
+
* 紙面のリンクの click は useElementSelection の handleClick が preventDefault するが、
|
|
30
|
+
* トリミング中は止めないので、Alt + クリックはここ(capture)でも必ず止める。
|
|
23
31
|
*/
|
|
24
32
|
import { MARQUEE_DRAG_THRESHOLD } from '../constants';
|
|
25
33
|
|
|
@@ -175,17 +183,29 @@ export function clearPendingAnchor(id?: string): void {
|
|
|
175
183
|
|
|
176
184
|
/**
|
|
177
185
|
* 1 回目のクリックから移るまでの待ち。この間に 2 回目の mousedown が来たら
|
|
178
|
-
* ダブルクリック(
|
|
186
|
+
* ダブルクリック(潜る・テキスト編集)として移動を取り消す
|
|
179
187
|
*/
|
|
180
188
|
export const LINK_NAV_DELAY_MS = 350;
|
|
181
189
|
|
|
182
|
-
/**
|
|
190
|
+
/** Alt を押してリンクの上にいる間、紙面の <html> に付ける(カーソルを指にする) */
|
|
183
191
|
export const LINK_NAV_ATTR = 'data-gg-link-nav';
|
|
184
192
|
|
|
185
193
|
const OVERLAY_SELECTOR =
|
|
186
194
|
'.selection-box,.marquee-selection-box,[data-editor-overlay],#gg-smart-guides,#gg-measure-layer';
|
|
187
|
-
/**
|
|
188
|
-
|
|
195
|
+
/**
|
|
196
|
+
* 描画・テキスト・コメント・手のひら・トリミング・ズームの間は、クリックに別の意味がある
|
|
197
|
+
* (ズームツールの Alt + クリックは縮小)
|
|
198
|
+
*/
|
|
199
|
+
const BLOCKING_BODY_CLASSES = [
|
|
200
|
+
'draw-mode',
|
|
201
|
+
'text-mode',
|
|
202
|
+
'comment-mode',
|
|
203
|
+
'move-mode',
|
|
204
|
+
'pan-mode',
|
|
205
|
+
'panning',
|
|
206
|
+
'gg-cropping',
|
|
207
|
+
'zoom-tool',
|
|
208
|
+
];
|
|
189
209
|
|
|
190
210
|
const isMac = () => {
|
|
191
211
|
if (typeof navigator === 'undefined') return false;
|
|
@@ -226,7 +246,7 @@ export interface LinkNavigationOptions {
|
|
|
226
246
|
}
|
|
227
247
|
|
|
228
248
|
/**
|
|
229
|
-
* 紙面(iframe の文書)に
|
|
249
|
+
* 紙面(iframe の文書)に Alt + クリックの移動を付ける。戻り値は後始末
|
|
230
250
|
*/
|
|
231
251
|
export function attachLinkNavigation(iframeDoc: Document, options: LinkNavigationOptions): () => void {
|
|
232
252
|
const win = iframeDoc.defaultView;
|
|
@@ -234,9 +254,9 @@ export function attachLinkNavigation(iframeDoc: Document, options: LinkNavigatio
|
|
|
234
254
|
const hostDoc = frameEl?.ownerDocument ?? null;
|
|
235
255
|
const hostWin = hostDoc?.defaultView ?? null;
|
|
236
256
|
const mac = isMac();
|
|
237
|
-
const mod = mac ? '
|
|
238
|
-
|
|
239
|
-
const
|
|
257
|
+
const mod = mac ? '⌥ ' : 'Alt + ';
|
|
258
|
+
/** Alt だけ。⌘ / Ctrl / Shift と一緒なら選択の操作(最深要素・追加)なので移らない */
|
|
259
|
+
const navKey = (e: MouseEvent | KeyboardEvent) => e.altKey && !e.metaKey && !e.ctrlKey && !e.shiftKey;
|
|
240
260
|
|
|
241
261
|
let pointer: { x: number; y: number } | null = null;
|
|
242
262
|
let modifier = false;
|
|
@@ -330,7 +350,7 @@ export function attachLinkNavigation(iframeDoc: Document, options: LinkNavigatio
|
|
|
330
350
|
if (hint) hint.hidden = true;
|
|
331
351
|
};
|
|
332
352
|
|
|
333
|
-
/**
|
|
353
|
+
/** Alt を押してリンクの上にいれば、指のカーソルと行き先の案内を出す */
|
|
334
354
|
const update = (buttons = 0) => {
|
|
335
355
|
if (!modifier || !pointer || buttons !== 0 || blocked()) {
|
|
336
356
|
disarm();
|
|
@@ -378,16 +398,26 @@ export function attachLinkNavigation(iframeDoc: Document, options: LinkNavigatio
|
|
|
378
398
|
};
|
|
379
399
|
const onKey = (e: KeyboardEvent) => {
|
|
380
400
|
if (e.key === 'Escape') cancel();
|
|
381
|
-
if (
|
|
382
|
-
//
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
401
|
+
if (e.key === 'Alt') {
|
|
402
|
+
// Alt の keydown で altKey が立たない実装があっても、押したことを優先する
|
|
403
|
+
modifier = e.type === 'keydown' ? !(e.metaKey || e.ctrlKey || e.shiftKey) : navKey(e);
|
|
404
|
+
update();
|
|
405
|
+
return;
|
|
406
|
+
}
|
|
407
|
+
if (e.key === 'Meta' || e.key === 'Control' || e.key === 'Shift') {
|
|
408
|
+
// Alt を押したまま ⌘ / Ctrl / Shift を足す(移らなくなる)・離す(移れるようになる)
|
|
409
|
+
const next = navKey(e);
|
|
410
|
+
if (next !== modifier) {
|
|
411
|
+
modifier = next;
|
|
412
|
+
update();
|
|
386
413
|
}
|
|
387
414
|
return;
|
|
388
415
|
}
|
|
389
|
-
|
|
390
|
-
|
|
416
|
+
// Alt を離したことに気づけなかった(別のウィンドウで離した等)ときの戻し
|
|
417
|
+
if (modifier && !navKey(e)) {
|
|
418
|
+
modifier = false;
|
|
419
|
+
disarm();
|
|
420
|
+
}
|
|
391
421
|
};
|
|
392
422
|
const onBlur = () => {
|
|
393
423
|
modifier = false;
|
|
@@ -397,7 +427,7 @@ export function attachLinkNavigation(iframeDoc: Document, options: LinkNavigatio
|
|
|
397
427
|
const onMouseDown = (e: MouseEvent) => {
|
|
398
428
|
// 2 回目の mousedown(ダブルクリック)・別のクリックが来たら、前の移動は取り消す
|
|
399
429
|
cancel();
|
|
400
|
-
if (e.button !== 0 || !navKey(e)
|
|
430
|
+
if (e.button !== 0 || !navKey(e)) return;
|
|
401
431
|
if (e.detail > 1 || blocked()) return;
|
|
402
432
|
// 選択枠のハンドル(リサイズ・回転)を押したのはハンドルの操作。下にリンクがあっても移らない
|
|
403
433
|
if ((e.target as Element | null)?.closest?.('[data-handle]')) return;
|
|
@@ -408,14 +438,16 @@ export function attachLinkNavigation(iframeDoc: Document, options: LinkNavigatio
|
|
|
408
438
|
const moved = (e: MouseEvent, p: { x: number; y: number }) =>
|
|
409
439
|
Math.abs(e.clientX - p.x) > MARQUEE_DRAG_THRESHOLD || Math.abs(e.clientY - p.y) > MARQUEE_DRAG_THRESHOLD;
|
|
410
440
|
const onMouseUp = (e: MouseEvent) => {
|
|
411
|
-
//
|
|
441
|
+
// Alt + ドラッグ(移動)だった
|
|
412
442
|
if (pending && moved(e, pending)) pending = null;
|
|
413
443
|
};
|
|
414
444
|
const onClick = (e: MouseEvent) => {
|
|
445
|
+
// 移らないとき(ズームツール・トリミング中・⌘ と一緒など)も、リンクのダウンロードはさせない
|
|
446
|
+
if (e.altKey && (e.target as Element | null)?.closest?.('a[href]')) e.preventDefault();
|
|
415
447
|
const p = pending;
|
|
416
448
|
pending = null;
|
|
417
449
|
if (!p || e.button !== 0 || e.detail > 1) return;
|
|
418
|
-
if (!navKey(e) ||
|
|
450
|
+
if (!navKey(e) || moved(e, p)) return;
|
|
419
451
|
timer = setTimeout(() => {
|
|
420
452
|
timer = null;
|
|
421
453
|
// 待っている間にテキスト編集に入った・紙面が差し替わった・モードが変わった
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import type { SelectedElementInfo, ImageFillMode } from '../types';
|
|
6
6
|
import { getArtboardScale } from './dom-utils';
|
|
7
7
|
import { extractValueFromTailwindClass } from './tailwind-utils';
|
|
8
|
+
import { summarizeBorder, borderSideWidthCss } from './border-sides';
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* RGB/RGBA色をHEXに変換
|
|
@@ -525,7 +526,11 @@ export function extractElementInfo(
|
|
|
525
526
|
const rawFontSize = extractRawStyleValue(element.style.fontSize, 'fontSize');
|
|
526
527
|
const rawLineHeight = extractRawStyleValue(element.style.lineHeight, 'lineHeight');
|
|
527
528
|
const rawLetterSpacing = extractRawStyleValue(element.style.letterSpacing, 'letterSpacing');
|
|
528
|
-
|
|
529
|
+
// 片側だけの線(border-l-2 など)は、見えている辺の値を出す(utils/border-sides.ts)
|
|
530
|
+
const border = summarizeBorder(style, element);
|
|
531
|
+
const rawBorderWidth = border.sides
|
|
532
|
+
? extractRawStyleValue(element.style.getPropertyValue(borderSideWidthCss(border.sides[0])), 'borderWidth')
|
|
533
|
+
: extractRawStyleValue(element.style.borderWidth, 'borderWidth');
|
|
529
534
|
const rawGap = extractRawStyleValue(element.style.gap, 'gap');
|
|
530
535
|
// Position values (left/top)
|
|
531
536
|
const rawLeft = extractRawStyleValue(element.style.left, 'left');
|
|
@@ -573,9 +578,10 @@ export function extractElementInfo(
|
|
|
573
578
|
imagePositionX: parseBackgroundPositionX(style.backgroundPosition),
|
|
574
579
|
imagePositionY: parseBackgroundPositionY(style.backgroundPosition),
|
|
575
580
|
imageScale: parseBackgroundScale(style.backgroundSize),
|
|
576
|
-
borderWidth:
|
|
577
|
-
borderColor:
|
|
578
|
-
borderStyle: style
|
|
581
|
+
borderWidth: border.width,
|
|
582
|
+
borderColor: border.color,
|
|
583
|
+
borderStyle: border.style,
|
|
584
|
+
borderSides: border.sides,
|
|
579
585
|
borderRadius: parseFloat(style.borderRadius) || 0,
|
|
580
586
|
borderRadiusTopLeft: parseFloat(style.borderTopLeftRadius) || 0,
|
|
581
587
|
borderRadiusTopRight: parseFloat(style.borderTopRightRadius) || 0,
|
|
@@ -94,13 +94,8 @@ export const TAILWIND_CONFLICT_GROUPS: Record<string, string[]> = {
|
|
|
94
94
|
borderTopRightRadius: ['rounded-tr-'],
|
|
95
95
|
borderBottomRightRadius: ['rounded-br-'],
|
|
96
96
|
borderBottomLeftRadius: ['rounded-bl-'],
|
|
97
|
-
borderWidth
|
|
98
|
-
|
|
99
|
-
borderRightWidth: ['border-r-'],
|
|
100
|
-
borderBottomWidth: ['border-b-'],
|
|
101
|
-
borderLeftWidth: ['border-l-'],
|
|
102
|
-
borderColor: ['border-'],
|
|
103
|
-
borderStyle: ['border-solid', 'border-dashed', 'border-dotted', 'border-none'],
|
|
97
|
+
// borderWidth / border*Width / borderColor / borderStyle は tailwind-utils の removeConflictingClasses が
|
|
98
|
+
// クラスの形で見分けて消す(接頭辞 border- では太さ・色・スタイルが区別できない)
|
|
104
99
|
|
|
105
100
|
// Typography
|
|
106
101
|
// 注意: fontSize と color は両方 text- プレフィックスを使用するが、
|
|
@@ -294,6 +294,80 @@ function isTextColorClass(cls: string): boolean {
|
|
|
294
294
|
return false;
|
|
295
295
|
}
|
|
296
296
|
|
|
297
|
+
// ------------------------------------------------------------
|
|
298
|
+
// 線(border-*)のクラスの見分け
|
|
299
|
+
// ------------------------------------------------------------
|
|
300
|
+
// border- で始まるクラスには、太さ(border-2 / border-l-2)・色(border-wf-ink)・
|
|
301
|
+
// スタイル(border-dashed)・表(border-collapse)が混ざっている。
|
|
302
|
+
// 以前は線色・線幅の変更で「border- で始まるもの」を全部消していたので、
|
|
303
|
+
// 左だけの線(border-l-2)や色・破線まで消えていた。tailwind-merge と同じ見分け方にする
|
|
304
|
+
// (太さ・スタイル・表の形でないものを色とみなす。テーマの色名を名簿で持たずに済む)
|
|
305
|
+
|
|
306
|
+
const BORDER_STYLE_CLASSES = new Set([
|
|
307
|
+
'border-solid',
|
|
308
|
+
'border-dashed',
|
|
309
|
+
'border-dotted',
|
|
310
|
+
'border-double',
|
|
311
|
+
'border-hidden',
|
|
312
|
+
'border-none',
|
|
313
|
+
]);
|
|
314
|
+
|
|
315
|
+
const isBorderTableClass = (cls: string) => /^border-(collapse|separate|spacing(-|$))/.test(cls);
|
|
316
|
+
|
|
317
|
+
/**
|
|
318
|
+
* important の印を外す(`border-2!` / `!border-2`)。付いていても種類は同じなので、
|
|
319
|
+
* 判定の前に外して、消すときも同じ種類として消す(付いたまま残ると、新しい太さが !important に負ける)
|
|
320
|
+
*/
|
|
321
|
+
const stripImportant = (cls: string) => cls.replace(/^!/, '').replace(/!$/, '');
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* 太さの値: 数字(border-2)、長さの任意値(border-[2px] / border-[length:var(--w)] /
|
|
325
|
+
* border-[min(2px,1vw)])、太さのキーワード(border-[thin] など。`border-[mediumblue]` は色なので厳密一致)、
|
|
326
|
+
* border-(length:--w)
|
|
327
|
+
*/
|
|
328
|
+
const BORDER_WIDTH_VALUE = String.raw`(-\d+|-\[(?:thin|medium|thick)\]|-\[(?:\d|\.|calc\(|min\(|max\(|clamp\(|length:)[^\]]*\]|-\(length:[^)]*\))?`;
|
|
329
|
+
|
|
330
|
+
/** 辺の指定。`bs` / `be`(書字方向の始め・終わり)も Tailwind では辺の太さ */
|
|
331
|
+
const BORDER_SIDE_TOKENS = '(?:[trblxyse]|bs|be)';
|
|
332
|
+
|
|
333
|
+
/**
|
|
334
|
+
* 太さのクラス。side を渡すとその辺だけ(border-l / border-l-2 / border-l-[3px])、
|
|
335
|
+
* '' なら四辺まとめての指定だけ(border / border-2)。渡さなければ全部の辺と各辺
|
|
336
|
+
*/
|
|
337
|
+
/** 辺を表す文字。`s` / `e` は書字方向、`bs` / `be` はブロック方向 */
|
|
338
|
+
export type SideLetter = 't' | 'r' | 'b' | 'l' | 'x' | 'y' | 's' | 'e' | 'bs' | 'be';
|
|
339
|
+
|
|
340
|
+
export function isBorderWidthClass(cls: string, side?: SideLetter | ''): boolean {
|
|
341
|
+
const sides = side === undefined ? `(-${BORDER_SIDE_TOKENS})?` : side ? `-${side}` : '';
|
|
342
|
+
return new RegExp(`^border${sides}${BORDER_WIDTH_VALUE}$`).test(stripImportant(cls));
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
/** スタイルのクラス(border-solid / border-dashed!) */
|
|
346
|
+
const isBorderStyleClass = (cls: string) => BORDER_STYLE_CLASSES.has(stripImportant(cls));
|
|
347
|
+
|
|
348
|
+
/** 太さ 0 の指定(border-0 / border-l-0 / border-[0px])。「線がある」の判定では数えない */
|
|
349
|
+
export function isZeroBorderWidthClass(cls: string): boolean {
|
|
350
|
+
return new RegExp(`^border(-${BORDER_SIDE_TOKENS})?-(0|\\[0(?:px|rem|em)?\\])$`).test(stripImportant(cls));
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
/** 色のクラス(border-wf-ink / border-l-wf-ink / border-[#fff] / border-[var(--x)] / border-wf-ink/50) */
|
|
354
|
+
function isBorderColorClass(cls: string): boolean {
|
|
355
|
+
const bare = stripImportant(cls);
|
|
356
|
+
return (
|
|
357
|
+
bare.startsWith('border-') &&
|
|
358
|
+
!BORDER_STYLE_CLASSES.has(bare) &&
|
|
359
|
+
!isBorderTableClass(bare) &&
|
|
360
|
+
!isBorderWidthClass(bare)
|
|
361
|
+
);
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
const BORDER_SIDE_WIDTH_PROPERTIES: Record<string, 't' | 'r' | 'b' | 'l'> = {
|
|
365
|
+
borderTopWidth: 't',
|
|
366
|
+
borderRightWidth: 'r',
|
|
367
|
+
borderBottomWidth: 'b',
|
|
368
|
+
borderLeftWidth: 'l',
|
|
369
|
+
};
|
|
370
|
+
|
|
297
371
|
/**
|
|
298
372
|
* 競合するクラスを要素から削除
|
|
299
373
|
*
|
|
@@ -322,6 +396,26 @@ export function removeConflictingClasses(
|
|
|
322
396
|
return;
|
|
323
397
|
}
|
|
324
398
|
|
|
399
|
+
// 線の太さ・色・スタイルは、同じ種類のクラスだけを消す(太さを変えても色・破線は残す。色を変えても左だけの線は残す)。
|
|
400
|
+
// スタイルもここで消すのは、important 付き(border-dashed!)を名前の一致では拾えないため
|
|
401
|
+
if (
|
|
402
|
+
property === 'borderWidth' ||
|
|
403
|
+
property === 'borderColor' ||
|
|
404
|
+
property === 'borderStyle' ||
|
|
405
|
+
property in BORDER_SIDE_WIDTH_PROPERTIES
|
|
406
|
+
) {
|
|
407
|
+
const side = BORDER_SIDE_WIDTH_PROPERTIES[property];
|
|
408
|
+
const conflicts =
|
|
409
|
+
property === 'borderColor'
|
|
410
|
+
? isBorderColorClass
|
|
411
|
+
: property === 'borderStyle'
|
|
412
|
+
? isBorderStyleClass
|
|
413
|
+
: (cls: string) => isBorderWidthClass(cls, side);
|
|
414
|
+
const currentClasses = getElementClassName(element).split(/\s+/).filter(Boolean);
|
|
415
|
+
setElementClassName(element, currentClasses.filter((cls) => !conflicts(cls)).join(' '));
|
|
416
|
+
return;
|
|
417
|
+
}
|
|
418
|
+
|
|
325
419
|
if (!conflictPrefixes || conflictPrefixes.length === 0) return;
|
|
326
420
|
|
|
327
421
|
const currentClasses = getElementClassName(element).split(/\s+/).filter(Boolean);
|
|
@@ -379,6 +473,17 @@ const LAYOUT_CRITICAL_PROPERTIES = new Set([
|
|
|
379
473
|
'maxWidth',
|
|
380
474
|
'minHeight',
|
|
381
475
|
'maxHeight',
|
|
476
|
+
// 線のスタイル(なし / 実線 / 破線 / 点線)も同じ理由でインラインを残す。
|
|
477
|
+
// 紙面の CSS はファイルに書かれたクラスの分しか作られない(Vite の @source 走査)ので、
|
|
478
|
+
// 付けたばかりの border-none / border-solid にはルールが無く、紙面が変わらない。
|
|
479
|
+
// 右パネルは紙面の computed style を読み直すため、「なし」を選んでも「実線」に戻って見えていた
|
|
480
|
+
'borderStyle',
|
|
481
|
+
// 線幅も同じ。border-0 / border-l-0 などは紙面の CSS に無いことが多い(構成ラフの殻で実測)
|
|
482
|
+
'borderWidth',
|
|
483
|
+
'borderTopWidth',
|
|
484
|
+
'borderRightWidth',
|
|
485
|
+
'borderBottomWidth',
|
|
486
|
+
'borderLeftWidth',
|
|
382
487
|
'display',
|
|
383
488
|
'flexDirection',
|
|
384
489
|
'flexWrap',
|
package/src/version.ts
CHANGED