@8btc/whiteboard 0.0.20-alpha.21 → 0.0.20-alpha.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.css CHANGED
@@ -1 +1 @@
1
- @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-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-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}:root{overflow-wrap:break-word;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--tt-gray-light-a-50:#3838380a;--tt-gray-light-a-100:#0f16240d;--tt-gray-light-a-200:#25272d1a;--tt-gray-light-a-300:#2f323733;--tt-gray-light-a-400:#282c336b;--tt-gray-light-a-500:#34373ca3;--tt-gray-light-a-600:#24272ec7;--tt-gray-light-a-700:#23252ade;--tt-gray-light-a-800:#1e2024f2;--tt-gray-light-a-900:#1d1e20fa;--tt-gray-light-50:#fafafa;--tt-gray-light-100:#f4f4f5;--tt-gray-light-200:#eaeaeb;--tt-gray-light-300:#d5d6d7;--tt-gray-light-400:#a6a7ab;--tt-gray-light-500:#7d7f82;--tt-gray-light-600:#53565a;--tt-gray-light-700:#404145;--tt-gray-light-800:#2c2d30;--tt-gray-light-900:#222325;--tt-gray-dark-a-50:#e8e8fd0d;--tt-gray-dark-a-100:#e7e7f312;--tt-gray-dark-a-200:#eeeef61c;--tt-gray-dark-a-300:#efeff538;--tt-gray-dark-a-400:#f4f4ff5e;--tt-gray-dark-a-500:#eceefd80;--tt-gray-dark-a-600:#f7f7fda3;--tt-gray-dark-a-700:#fbfbfebf;--tt-gray-dark-a-800:#fdfdfde0;--tt-gray-dark-a-900:#fffffff5;--tt-gray-dark-50:#19191a;--tt-gray-dark-100:#202022;--tt-gray-dark-200:#2d2d2f;--tt-gray-dark-300:#464649;--tt-gray-dark-400:#636369;--tt-gray-dark-500:#7c7c83;--tt-gray-dark-600:#a3a3a8;--tt-gray-dark-700:#c0c0c3;--tt-gray-dark-800:#e0e0e1;--tt-gray-dark-900:#f5f5f5;--tt-brand-color-50:#efeeff;--tt-brand-color-100:#dedbff;--tt-brand-color-200:#c3bdff;--tt-brand-color-300:#9d8aff;--tt-brand-color-400:#7a52ff;--tt-brand-color-500:#6229ff;--tt-brand-color-600:#5400e5;--tt-brand-color-700:#4b00cc;--tt-brand-color-800:#380099;--tt-brand-color-900:#2b1966;--tt-brand-color-950:#0d002e;--tt-color-green-inc-5:#f0fff2;--tt-color-green-inc-4:#d6ffdc;--tt-color-green-inc-3:#b8ffc5;--tt-color-green-inc-2:#90fea8;--tt-color-green-inc-1:#67fe92;--tt-color-green-base:#01fe73;--tt-color-green-dec-1:#03ce5e;--tt-color-green-dec-2:#02a247;--tt-color-green-dec-3:#007a35;--tt-color-green-dec-4:#005221;--tt-color-green-dec-5:#002e0f;--tt-color-yellow-inc-5:#fffcf0;--tt-color-yellow-inc-4:#fff7d1;--tt-color-yellow-inc-3:#fff1ad;--tt-color-yellow-inc-2:#ffeb8a;--tt-color-yellow-inc-1:#ffe45c;--tt-color-yellow-base:#fd0;--tt-color-yellow-dec-1:#d1b500;--tt-color-yellow-dec-2:#a38d00;--tt-color-yellow-dec-3:#7a6a00;--tt-color-yellow-dec-4:#524500;--tt-color-yellow-dec-5:#2e2600;--tt-color-red-inc-5:#ffeeeb;--tt-color-red-inc-4:#ffcdc2;--tt-color-red-inc-3:#fa9;--tt-color-red-inc-2:#ff8a75;--tt-color-red-inc-1:#ff5d47;--tt-color-red-base:#ff3014;--tt-color-red-dec-1:#d11800;--tt-color-red-dec-2:#a30e00;--tt-color-red-dec-3:#7a0800;--tt-color-red-dec-4:#520400;--tt-color-red-dec-5:#2e0100;--white:#fff;--black:#0e0e11;--transparent:#fff0;--tt-shadow-elevated-md:0px 16px 48px 0px #1118270a,0px 12px 24px 0px #1118270a,0px 6px 8px 0px #11182705,0px 2px 3px 0px #11182705;--tt-radius-xxs:.125rem;--tt-radius-xs:.25rem;--tt-radius-sm:.375rem;--tt-radius-md:.5rem;--tt-radius-lg:.75rem;--tt-radius-xl:1rem;--tt-transition-duration-short:.1s;--tt-transition-duration-default:.2s;--tt-transition-duration-long:.64s;--tt-transition-easing-default:cubic-bezier(.46,.03,.52,.96);--tt-transition-easing-cubic:cubic-bezier(.65,.05,.36,1);--tt-transition-easing-quart:cubic-bezier(.77,0,.18,1);--tt-transition-easing-circ:cubic-bezier(.79,.14,.15,.86);--tt-transition-easing-back:cubic-bezier(.68,-.55,.27,1.55);--tt-accent-contrast:8%;--tt-destructive-contrast:8%;--tt-foreground-contrast:8%}:root,:root *,:root :before,:root :after{box-sizing:border-box;transition:none var(--tt-transition-duration-default)var(--tt-transition-easing-default)}:root{--tt-bg-color:var(--white);--tt-border-color:var(--tt-gray-light-a-200);--tt-border-color-tint:var(--tt-gray-light-a-100);--tt-sidebar-bg-color:var(--tt-gray-light-100);--tt-scrollbar-color:var(--tt-gray-light-a-200);--tt-cursor-color:var(--tt-brand-color-500);--tt-selection-color:#9d8aff33;--tt-card-bg-color:var(--white);--tt-card-border-color:var(--tt-gray-light-a-100)}.dark{--tt-bg-color:var(--black);--tt-border-color:var(--tt-gray-dark-a-200);--tt-border-color-tint:var(--tt-gray-dark-a-100);--tt-sidebar-bg-color:var(--tt-gray-dark-100);--tt-scrollbar-color:var(--tt-gray-dark-a-200);--tt-cursor-color:var(--tt-brand-color-400);--tt-selection-color:#7a52ff33;--tt-card-bg-color:var(--tt-gray-dark-50);--tt-card-border-color:var(--tt-gray-dark-a-50);--tt-shadow-elevated-md:0px 16px 48px 0px #00000080,0px 12px 24px 0px #0000003d,0px 6px 8px 0px #00000038,0px 2px 3px 0px #0000001f}:root{--tt-color-text-gray:#787673;--tt-color-text-brown:#9d6a53;--tt-color-text-orange:#d9730d;--tt-color-text-yellow:#ca922f;--tt-color-text-green:#448361;--tt-color-text-blue:#327da9;--tt-color-text-purple:#8f64af;--tt-color-text-pink:#c24c8b;--tt-color-text-red:#d34a45;--tt-color-text-gray-contrast:#54473126;--tt-color-text-brown-contrast:#d2a28e59;--tt-color-text-orange-contrast:#e07b3845;--tt-color-text-yellow-contrast:#ecbe4163;--tt-color-text-green-contrast:#7bb78145;--tt-color-text-blue-contrast:#5ea6cf45;--tt-color-text-purple-contrast:#a881c545;--tt-color-text-pink-contrast:#e189b445;--tt-color-text-red-contrast:#f4aa9f66}.dark{--tt-color-text-gray:#9c9c9c;--tt-color-text-brown:#b9856e;--tt-color-text-orange:#c77d48;--tt-color-text-yellow:#ca994e;--tt-color-text-green:#519e71;--tt-color-text-blue:#3699d3;--tt-color-text-purple:#9e69d3;--tt-color-text-pink:#d15796;--tt-color-text-red:#df5553;--tt-color-text-gray-contrast:#ffffff17;--tt-color-text-brown-contrast:#b9674640;--tt-color-text-orange-contrast:#e97d2533;--tt-color-text-yellow-contrast:#b3823d33;--tt-color-text-green-contrast:#2d9a6533;--tt-color-text-blue-contrast:#327da933;--tt-color-text-purple-contrast:#9b60d22e;--tt-color-text-pink-contrast:#dc4c9238;--tt-color-text-red-contrast:#dd555540}:root{--tt-color-highlight-yellow:#fef9c3;--tt-color-highlight-green:#dcfce7;--tt-color-highlight-blue:#e0f2fe;--tt-color-highlight-purple:#f3e8ff;--tt-color-highlight-red:#ffe4e6;--tt-color-highlight-gray:#f8f8f7;--tt-color-highlight-brown:#f4eeee;--tt-color-highlight-orange:#fbecdd;--tt-color-highlight-pink:#fcf1f6;--tt-color-highlight-yellow-contrast:#fbe604;--tt-color-highlight-green-contrast:#c7fad8;--tt-color-highlight-blue-contrast:#ceeafd;--tt-color-highlight-purple-contrast:#e4ccff;--tt-color-highlight-red-contrast:#ffccd0;--tt-color-highlight-gray-contrast:#54483126;--tt-color-highlight-brown-contrast:#d2a28d59;--tt-color-highlight-orange-contrast:#e07c3945;--tt-color-highlight-pink-contrast:#e188b345}.dark{--tt-color-highlight-yellow:#6b6524;--tt-color-highlight-green:#509568;--tt-color-highlight-blue:#6e92aa;--tt-color-highlight-purple:#583e74;--tt-color-highlight-red:#743e42;--tt-color-highlight-gray:#2f2f2f;--tt-color-highlight-brown:#4a3228;--tt-color-highlight-orange:#5c3b23;--tt-color-highlight-pink:#4e2c3c;--tt-color-highlight-yellow-contrast:#58531e;--tt-color-highlight-green-contrast:#47855d;--tt-color-highlight-blue-contrast:#5e86a1;--tt-color-highlight-purple-contrast:#4c3564;--tt-color-highlight-red-contrast:#643539;--tt-color-highlight-gray-contrast:#ffffff18;--tt-color-highlight-brown-contrast:#b8654540;--tt-color-highlight-orange-contrast:#e97e2533;--tt-color-highlight-pink-contrast:#dc4c9138}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes zoomIn{0%{transform:scale(.95)}to{transform:scale(1)}}@keyframes zoomOut{0%{transform:scale(1)}to{transform:scale(.95)}}@keyframes zoom{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes slideFromTop{0%{transform:translateY(-.5rem)}to{transform:translateY(0)}}@keyframes slideFromRight{0%{transform:translate(.5rem)}to{transform:translate(0)}}@keyframes slideFromLeft{0%{transform:translate(-.5rem)}to{transform:translate(0)}}@keyframes slideFromBottom{0%{transform:translateY(.5rem)}to{transform:translateY(0)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-600:oklch(64.6% .222 41.116);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-teal-500:oklch(70.4% .14 182.503);--color-teal-600:oklch(60% .118 184.704);--color-cyan-500:oklch(71.5% .143 215.221);--color-cyan-600:oklch(60.9% .126 221.723);--color-cyan-700:oklch(52% .105 223.128);--color-sky-500:oklch(68.5% .169 237.323);--color-sky-600:oklch(58.8% .158 241.966);--color-sky-700:oklch(50% .134 242.749);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-indigo-500:oklch(58.5% .233 277.117);--color-indigo-600:oklch(51.1% .262 276.966);--color-violet-500:oklch(60.6% .25 292.717);--color-violet-600:oklch(54.1% .281 293.009);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-600:oklch(55.8% .288 302.321);--color-fuchsia-500:oklch(66.7% .295 322.15);--color-fuchsia-600:oklch(59.1% .293 322.896);--color-pink-500:oklch(65.6% .241 354.308);--color-pink-600:oklch(59.2% .249 .584);--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-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--font-weight-medium:500;--font-weight-bold:700;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring)50%,transparent)}}body{background-color:var(--background);color:var(--foreground)}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.top-4{top:calc(var(--spacing)*4)}.right-4{right:calc(var(--spacing)*4)}.bottom-4{bottom:calc(var(--spacing)*4)}.left-0{left:calc(var(--spacing)*0)}.left-4{left:calc(var(--spacing)*4)}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[9998\]{z-index:9998}.z-\[9999\]{z-index:9999}.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}}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.size-10{width:calc(var(--spacing)*10);height:calc(var(--spacing)*10)}.size-full{width:100%;height:100%}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-\[500px\]{height:500px}.h-full{height:100%}.max-h-40{max-height:calc(var(--spacing)*40)}.w-6{width:calc(var(--spacing)*6)}.w-\[700px\]{width:700px}.w-full{width:100%}.max-w-xs{max-width:var(--container-xs)}.min-w-16{min-width:calc(var(--spacing)*16)}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.touch-none{touch-action:none}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}: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)))}.overflow-auto{overflow:auto}.rounded{border-radius:.25rem}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-blue-500{border-color:var(--color-blue-500)}.border-blue-600{border-color:var(--color-blue-600)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.bg-amber-500{background-color:var(--color-amber-500)}.bg-background{background-color:var(--background)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-cyan-500{background-color:var(--color-cyan-500)}.bg-cyan-600{background-color:var(--color-cyan-600)}.bg-destructive{background-color:var(--destructive)}.bg-fuchsia-500{background-color:var(--color-fuchsia-500)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-green-500{background-color:var(--color-green-500)}.bg-indigo-500{background-color:var(--color-indigo-500)}.bg-orange-500{background-color:var(--color-orange-500)}.bg-pink-500{background-color:var(--color-pink-500)}.bg-primary{background-color:var(--primary)}.bg-purple-500{background-color:var(--color-purple-500)}.bg-red-500{background-color:var(--color-red-500)}.bg-secondary{background-color:var(--secondary)}.bg-sky-500{background-color:var(--color-sky-500)}.bg-sky-600{background-color:var(--color-sky-600)}.bg-teal-500{background-color:var(--color-teal-500)}.bg-violet-500{background-color:var(--color-violet-500)}.bg-white{background-color:var(--color-white)}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.p-10{padding:calc(var(--spacing)*10)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-4{padding-top:calc(var(--spacing)*4)}.text-left{text-align:left}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-gray-400{color:var(--color-gray-400)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.italic{font-style:italic}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.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-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)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);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-blue-200{--tw-ring-color:var(--color-blue-200)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.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-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))}.outline-none{--tw-outline-style:none;outline-style:none}@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-gray-400:hover{border-color:var(--color-gray-400)}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-amber-600:hover{background-color:var(--color-amber-600)}.hover\:bg-blue-600:hover{background-color:var(--color-blue-600)}.hover\:bg-cyan-600:hover{background-color:var(--color-cyan-600)}.hover\:bg-cyan-700:hover{background-color:var(--color-cyan-700)}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}.hover\:bg-fuchsia-600:hover{background-color:var(--color-fuchsia-600)}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-gray-200:hover{background-color:var(--color-gray-200)}.hover\:bg-green-600:hover{background-color:var(--color-green-600)}.hover\:bg-indigo-600:hover{background-color:var(--color-indigo-600)}.hover\:bg-orange-600:hover{background-color:var(--color-orange-600)}.hover\:bg-pink-600:hover{background-color:var(--color-pink-600)}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}.hover\:bg-purple-600:hover{background-color:var(--color-purple-600)}.hover\:bg-red-600:hover{background-color:var(--color-red-600)}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary)80%,transparent)}}.hover\:bg-sky-600:hover{background-color:var(--color-sky-600)}.hover\:bg-sky-700:hover{background-color:var(--color-sky-700)}.hover\:bg-teal-600:hover{background-color:var(--color-teal-600)}.hover\:bg-violet-600:hover{background-color:var(--color-violet-600)}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:underline:hover{text-decoration-line:underline}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + 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-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-destructive\/60:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive)60%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input)30%,transparent)}}@media(hover:hover){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input)50%,transparent)}}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--radius:.625rem;--background:oklch(100% 0 0);--foreground:oklch(14.5% 0 0);--card:oklch(100% 0 0);--card-foreground:oklch(14.5% 0 0);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.5% 0 0);--primary:oklch(20.5% 0 0);--primary-foreground:oklch(98.5% 0 0);--secondary:oklch(97% 0 0);--secondary-foreground:oklch(20.5% 0 0);--muted:oklch(97% 0 0);--muted-foreground:oklch(55.6% 0 0);--accent:oklch(97% 0 0);--accent-foreground:oklch(20.5% 0 0);--destructive:oklch(57.7% .245 27.325);--border:oklch(92.2% 0 0);--input:oklch(92.2% 0 0);--ring:oklch(70.8% 0 0);--chart-1:oklch(64.6% .222 41.116);--chart-2:oklch(60% .118 184.704);--chart-3:oklch(39.8% .07 227.392);--chart-4:oklch(82.8% .189 84.429);--chart-5:oklch(76.9% .188 70.08);--sidebar:oklch(98.5% 0 0);--sidebar-foreground:oklch(14.5% 0 0);--sidebar-primary:oklch(20.5% 0 0);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(97% 0 0);--sidebar-accent-foreground:oklch(20.5% 0 0);--sidebar-border:oklch(92.2% 0 0);--sidebar-ring:oklch(70.8% 0 0)}.dark{--background:oklch(14.5% 0 0);--foreground:oklch(98.5% 0 0);--card:oklch(20.5% 0 0);--card-foreground:oklch(98.5% 0 0);--popover:oklch(20.5% 0 0);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(92.2% 0 0);--primary-foreground:oklch(20.5% 0 0);--secondary:oklch(26.9% 0 0);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(26.9% 0 0);--muted-foreground:oklch(70.8% 0 0);--accent:oklch(26.9% 0 0);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(70.4% .191 22.216);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(55.6% 0 0);--chart-1:oklch(48.8% .243 264.376);--chart-2:oklch(69.6% .17 162.48);--chart-3:oklch(76.9% .188 70.08);--chart-4:oklch(62.7% .265 303.9);--chart-5:oklch(64.5% .246 16.439);--sidebar:oklch(20.5% 0 0);--sidebar-foreground:oklch(98.5% 0 0);--sidebar-primary:oklch(48.8% .243 264.376);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(26.9% 0 0);--sidebar-accent-foreground:oklch(98.5% 0 0);--sidebar-border:oklch(100% 0 0/.1);--sidebar-ring:oklch(55.6% 0 0)}@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-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-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-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}.whiteboard{background-color:#f9fafb;.grid-dot{fill:#6e6e6e}}.whiteboard[data-theme=dark]{background-color:#151515;.grid-dot{fill:#666}}.ProseMirror{outline:2px solid #3b82f6}.tiptap{:first-child{margin-top:0}ul,ol{padding:0 1rem;margin:1.25rem 1rem 1.25rem .4rem;li p{margin-top:.25em;margin-bottom:.25em}}h1,h2,h3,h4,h5,h6{line-height:1.1;margin-top:2.5rem;text-wrap:pretty}h1,h2{margin-top:3.5rem;margin-bottom:1.5rem}h1{font-size:1.4rem}h2{font-size:1.2rem}h3{font-size:1.1rem}h4,h5,h6{font-size:1rem}code{background-color:var(--purple-light);border-radius:.4rem;color:var(--black);font-size:.85rem;padding:.25em .3em}pre{background:var(--black);border-radius:.5rem;color:var(--white);font-family:JetBrainsMono,monospace;margin:1.5rem 0;padding:.75rem 1rem;code{background:none;color:inherit;font-size:.8rem;padding:0}}blockquote{border-left:3px solid var(--gray-3);margin:1.5rem 0;padding-left:1rem}hr{border:none;border-top:1px solid var(--gray-2);margin:2rem 0}}.bubble-menu{background-color:var(--white);border:1px solid var(--gray-1);border-radius:.7rem;box-shadow:var(--shadow);display:flex;padding:.2rem;button{background-color:unset;&:hover{background-color:var(--gray-3)}&.is-active{background-color:var(--purple);&:hover{background-color:var(--purple-contrast)}}}}.tiptap-tooltip{--tt-tooltip-bg: var(--tt-gray-light-900);--tt-tooltip-text: var(--white);--tt-kbd: var(--tt-gray-dark-a-400)}.dark .tiptap-tooltip{--tt-tooltip-bg: var(--white);--tt-tooltip-text: var(--tt-gray-light-600);--tt-kbd: var(--tt-gray-light-a-400)}.tiptap-tooltip{z-index:200;overflow:hidden;border-radius:var(--tt-radius-md, .375rem);background-color:var(--tt-tooltip-bg);padding:.375rem .5rem;font-size:.75rem;font-weight:500;color:var(--tt-tooltip-text);box-shadow:0 4px 6px -1px #0000001a;text-align:center}.tiptap-tooltip kbd{display:inline-block;text-align:center;vertical-align:baseline;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;text-transform:capitalize;color:var(--tt-kbd)}.tiptap-button{--tt-button-default-bg-color: var(--tt-gray-light-a-100);--tt-button-hover-bg-color: var(--tt-gray-light-200);--tt-button-active-bg-color: var(--tt-gray-light-a-200);--tt-button-active-bg-color-emphasized: var( --tt-brand-color-100 );--tt-button-active-bg-color-subdued: var( --tt-gray-light-a-200 );--tt-button-active-hover-bg-color: var(--tt-gray-light-300);--tt-button-active-hover-bg-color-emphasized: var( --tt-brand-color-200 );--tt-button-active-hover-bg-color-subdued: var( --tt-gray-light-a-300 );--tt-button-disabled-bg-color: var(--tt-gray-light-a-50)}.dark .tiptap-button{--tt-button-default-bg-color: var(--tt-gray-dark-a-100);--tt-button-hover-bg-color: var(--tt-gray-dark-200);--tt-button-active-bg-color: var(--tt-gray-dark-a-200);--tt-button-active-bg-color-emphasized: var( --tt-brand-color-900 );--tt-button-active-bg-color-subdued: var( --tt-gray-dark-a-200 );--tt-button-active-hover-bg-color: var(--tt-gray-dark-300);--tt-button-active-hover-bg-color-emphasized: var( --tt-brand-color-800 );--tt-button-active-hover-bg-color-subdued: var( --tt-gray-dark-a-300 );--tt-button-disabled-bg-color: var(--tt-gray-dark-a-50)}.tiptap-button{--tt-button-default-text-color: var(--tt-gray-light-a-600);--tt-button-hover-text-color: var(--tt-gray-light-a-900);--tt-button-active-text-color: var(--tt-gray-light-a-900);--tt-button-active-text-color-emphasized: var(--tt-gray-light-a-900);--tt-button-active-text-color-subdued: var(--tt-gray-light-a-900);--tt-button-disabled-text-color: var(--tt-gray-light-a-400)}.dark .tiptap-button{--tt-button-default-text-color: var(--tt-gray-dark-a-600);--tt-button-hover-text-color: var(--tt-gray-dark-a-900);--tt-button-active-text-color: var(--tt-gray-dark-a-900);--tt-button-active-text-color-emphasized: var(--tt-gray-dark-a-900);--tt-button-active-text-color-subdued: var(--tt-gray-dark-a-900);--tt-button-disabled-text-color: var(--tt-gray-dark-a-300)}.tiptap-button{--tt-button-default-icon-color: var(--tt-gray-light-a-600);--tt-button-hover-icon-color: var(--tt-gray-light-a-900);--tt-button-active-icon-color: var(--tt-brand-color-500);--tt-button-active-icon-color-emphasized: var(--tt-brand-color-600);--tt-button-active-icon-color-subdued: var(--tt-gray-light-a-900);--tt-button-disabled-icon-color: var(--tt-gray-light-a-400)}.dark .tiptap-button{--tt-button-default-icon-color: var(--tt-gray-dark-a-600);--tt-button-hover-icon-color: var(--tt-gray-dark-a-900);--tt-button-active-icon-color: var(--tt-brand-color-400);--tt-button-active-icon-color-emphasized: var(--tt-brand-color-400);--tt-button-active-icon-color-subdued: var(--tt-gray-dark-a-900);--tt-button-disabled-icon-color: var(--tt-gray-dark-a-400)}.tiptap-button{--tt-button-default-icon-sub-color: var(--tt-gray-light-a-400);--tt-button-hover-icon-sub-color: var(--tt-gray-light-a-500);--tt-button-active-icon-sub-color: var(--tt-gray-light-a-400);--tt-button-active-icon-sub-color-emphasized: var(--tt-gray-light-a-500);--tt-button-active-icon-sub-color-subdued: var(--tt-gray-light-a-400);--tt-button-disabled-icon-sub-color: var(--tt-gray-light-a-100)}.dark .tiptap-button{--tt-button-default-icon-sub-color: var(--tt-gray-dark-a-300);--tt-button-hover-icon-sub-color: var(--tt-gray-dark-a-400);--tt-button-active-icon-sub-color: var(--tt-gray-dark-a-300);--tt-button-active-icon-sub-color-emphasized: var(--tt-gray-dark-a-400);--tt-button-active-icon-sub-color-subdued: var(--tt-gray-dark-a-300);--tt-button-disabled-icon-sub-color: var(--tt-gray-dark-a-100)}.tiptap-button{--tt-button-default-dropdown-arrows-color: var(--tt-gray-light-a-600);--tt-button-hover-dropdown-arrows-color: var(--tt-gray-light-a-700);--tt-button-active-dropdown-arrows-color: var(--tt-gray-light-a-600);--tt-button-active-dropdown-arrows-color-emphasized: var( --tt-gray-light-a-700 );--tt-button-active-dropdown-arrows-color-subdued: var(--tt-gray-light-a-600);--tt-button-disabled-dropdown-arrows-color: var(--tt-gray-light-a-400)}.dark .tiptap-button{--tt-button-default-dropdown-arrows-color: var(--tt-gray-dark-a-600);--tt-button-hover-dropdown-arrows-color: var(--tt-gray-dark-a-700);--tt-button-active-dropdown-arrows-color: var(--tt-gray-dark-a-600);--tt-button-active-dropdown-arrows-color-emphasized: var( --tt-gray-dark-a-700 );--tt-button-active-dropdown-arrows-color-subdued: var(--tt-gray-dark-a-600);--tt-button-disabled-dropdown-arrows-color: var(--tt-gray-dark-a-400)}.tiptap-button[data-style=ghost]{--tt-button-default-bg-color: var(--transparent);--tt-button-hover-bg-color: var(--tt-gray-light-200);--tt-button-active-bg-color: var(--tt-gray-light-a-100);--tt-button-active-bg-color-emphasized: var( --tt-brand-color-100 );--tt-button-active-bg-color-subdued: var( --tt-gray-light-a-100 );--tt-button-active-hover-bg-color: var(--tt-gray-light-200);--tt-button-active-hover-bg-color-emphasized: var( --tt-brand-color-200 );--tt-button-active-hover-bg-color-subdued: var( --tt-gray-light-a-200 );--tt-button-disabled-bg-color: var(--transparent)}.dark .tiptap-button[data-style=ghost]{--tt-button-default-bg-color: var(--transparent);--tt-button-hover-bg-color: var(--tt-gray-dark-200);--tt-button-active-bg-color: var(--tt-gray-dark-a-100);--tt-button-active-bg-color-emphasized: var( --tt-brand-color-900 );--tt-button-active-bg-color-subdued: var( --tt-gray-dark-a-100 );--tt-button-active-hover-bg-color: var(--tt-gray-dark-200);--tt-button-active-hover-bg-color-emphasized: var( --tt-brand-color-800 );--tt-button-active-hover-bg-color-subdued: var( --tt-gray-dark-a-200 );--tt-button-disabled-bg-color: var(--transparent)}.tiptap-button[data-style=ghost]{--tt-button-default-text-color: var(--tt-gray-light-a-600);--tt-button-hover-text-color: var(--tt-gray-light-a-900);--tt-button-active-text-color: var(--tt-gray-light-a-900);--tt-button-active-text-color-emphasized: var(--tt-gray-light-a-900);--tt-button-active-text-color-subdued: var(--tt-gray-light-a-900);--tt-button-disabled-text-color: var(--tt-gray-light-a-400)}.dark .tiptap-button[data-style=ghost]{--tt-button-default-text-color: var(--tt-gray-dark-a-600);--tt-button-hover-text-color: var(--tt-gray-dark-a-900);--tt-button-active-text-color: var(--tt-gray-dark-a-900);--tt-button-active-text-color-emphasized: var(--tt-gray-dark-a-900);--tt-button-active-text-color-subdued: var(--tt-gray-dark-a-900);--tt-button-disabled-text-color: var(--tt-gray-dark-a-300)}.tiptap-button[data-style=ghost]{--tt-button-default-icon-color: var(--tt-gray-light-a-600);--tt-button-hover-icon-color: var(--tt-gray-light-a-900);--tt-button-active-icon-color: var(--tt-brand-color-500);--tt-button-active-icon-color-emphasized: var(--tt-brand-color-600);--tt-button-active-icon-color-subdued: var(--tt-gray-light-a-900);--tt-button-disabled-icon-color: var(--tt-gray-light-a-400)}.dark .tiptap-button[data-style=ghost]{--tt-button-default-icon-color: var(--tt-gray-dark-a-600);--tt-button-hover-icon-color: var(--tt-gray-dark-a-900);--tt-button-active-icon-color: var(--tt-brand-color-400);--tt-button-active-icon-color-emphasized: var(--tt-brand-color-300);--tt-button-active-icon-color-subdued: var(--tt-gray-dark-a-900);--tt-button-disabled-icon-color: var(--tt-gray-dark-a-400)}.tiptap-button[data-style=ghost]{--tt-button-default-icon-sub-color: var(--tt-gray-light-a-400);--tt-button-hover-icon-sub-color: var(--tt-gray-light-a-500);--tt-button-active-icon-sub-color: var(--tt-gray-light-a-400);--tt-button-active-icon-sub-color-emphasized: var(--tt-gray-light-a-500);--tt-button-active-icon-sub-color-subdued: var(--tt-gray-light-a-400);--tt-button-disabled-icon-sub-color: var(--tt-gray-light-a-100)}.dark .tiptap-button[data-style=ghost]{--tt-button-default-icon-sub-color: var(--tt-gray-dark-a-300);--tt-button-hover-icon-sub-color: var(--tt-gray-dark-a-400);--tt-button-active-icon-sub-color: var(--tt-gray-dark-a-300);--tt-button-active-icon-sub-color-emphasized: var(--tt-gray-dark-a-400);--tt-button-active-icon-sub-color-subdued: var(--tt-gray-dark-a-300);--tt-button-disabled-icon-sub-color: var(--tt-gray-dark-a-100)}.tiptap-button[data-style=ghost]{--tt-button-default-dropdown-arrows-color: var(--tt-gray-light-a-600);--tt-button-hover-dropdown-arrows-color: var(--tt-gray-light-a-700);--tt-button-active-dropdown-arrows-color: var(--tt-gray-light-a-600);--tt-button-active-dropdown-arrows-color-emphasized: var( --tt-gray-light-a-700 );--tt-button-active-dropdown-arrows-color-subdued: var( --tt-gray-light-a-600 );--tt-button-disabled-dropdown-arrows-color: var(--tt-gray-light-a-400)}.dark .tiptap-button[data-style=ghost]{--tt-button-default-dropdown-arrows-color: var(--tt-gray-dark-a-600);--tt-button-hover-dropdown-arrows-color: var(--tt-gray-dark-a-700);--tt-button-active-dropdown-arrows-color: var(--tt-gray-dark-a-600);--tt-button-active-dropdown-arrows-color-emphasized: var( --tt-gray-dark-a-700 );--tt-button-active-dropdown-arrows-color-subdued: var( --tt-gray-dark-a-600 );--tt-button-disabled-dropdown-arrows-color: var(--tt-gray-dark-a-400)}.tiptap-button[data-style=primary]{--tt-button-default-bg-color: var(--tt-brand-color-500);--tt-button-hover-bg-color: var(--tt-brand-color-600);--tt-button-active-bg-color: var(--tt-brand-color-100);--tt-button-active-bg-color-emphasized: var( --tt-brand-color-100 );--tt-button-active-bg-color-subdued: var( --tt-brand-color-100 );--tt-button-active-hover-bg-color: var(--tt-brand-color-200);--tt-button-active-hover-bg-color-emphasized: var( --tt-brand-color-200 );--tt-button-active-hover-bg-color-subdued: var( --tt-brand-color-200 );--tt-button-disabled-bg-color: var(--tt-gray-light-a-100)}.dark .tiptap-button[data-style=primary]{--tt-button-default-bg-color: var(--tt-brand-color-500);--tt-button-hover-bg-color: var(--tt-brand-color-600);--tt-button-active-bg-color: var(--tt-brand-color-900);--tt-button-active-bg-color-emphasized: var( --tt-brand-color-900 );--tt-button-active-bg-color-subdued: var( --tt-brand-color-900 );--tt-button-active-hover-bg-color: var(--tt-brand-color-800);--tt-button-active-hover-bg-color-emphasized: var( --tt-brand-color-800 );--tt-button-active-hover-bg-color-subdued: var( --tt-brand-color-800 );--tt-button-disabled-bg-color: var(--tt-gray-dark-a-100)}.tiptap-button[data-style=primary]{--tt-button-default-text-color: var(--white);--tt-button-hover-text-color: var(--white);--tt-button-active-text-color: var(--tt-gray-light-a-900);--tt-button-active-text-color-emphasized: var(--tt-gray-light-a-900);--tt-button-active-text-color-subdued: var(--tt-gray-light-a-900);--tt-button-disabled-text-color: var(--tt-gray-light-a-400)}.dark .tiptap-button[data-style=primary]{--tt-button-default-text-color: var(--white);--tt-button-hover-text-color: var(--white);--tt-button-active-text-color: var(--tt-gray-dark-a-900);--tt-button-active-text-color-emphasized: var(--tt-gray-dark-a-900);--tt-button-active-text-color-subdued: var(--tt-gray-dark-a-900);--tt-button-disabled-text-color: var(--tt-gray-dark-a-300)}.tiptap-button[data-style=primary]{--tt-button-default-icon-color: var(--white);--tt-button-hover-icon-color: var(--white);--tt-button-active-icon-color: var(--tt-brand-color-600);--tt-button-active-icon-color-emphasized: var(--tt-brand-color-600);--tt-button-active-icon-color-subdued: var(--tt-brand-color-600);--tt-button-disabled-icon-color: var(--tt-gray-light-a-400)}.dark .tiptap-button[data-style=primary]{--tt-button-default-icon-color: var(--white);--tt-button-hover-icon-color: var(--white);--tt-button-active-icon-color: var(--tt-brand-color-400);--tt-button-active-icon-color-emphasized: var(--tt-brand-color-400);--tt-button-active-icon-color-subdued: var(--tt-brand-color-400);--tt-button-disabled-icon-color: var(--tt-gray-dark-a-300)}.tiptap-button[data-style=primary]{--tt-button-default-icon-sub-color: var(--tt-gray-dark-a-500);--tt-button-hover-icon-sub-color: var(--tt-gray-dark-a-500);--tt-button-active-icon-sub-color: var(--tt-gray-light-a-500);--tt-button-active-icon-sub-color-emphasized: var(--tt-gray-light-a-500);--tt-button-active-icon-sub-color-subdued: var(--tt-gray-light-a-500);--tt-button-disabled-icon-sub-color: var(--tt-gray-light-a-100)}.dark .tiptap-button[data-style=primary]{--tt-button-default-icon-sub-color: var(--tt-gray-dark-a-400);--tt-button-hover-icon-sub-color: var(--tt-gray-dark-a-500);--tt-button-active-icon-sub-color: var(--tt-gray-dark-a-300);--tt-button-active-icon-sub-color-emphasized: var(--tt-gray-dark-a-400);--tt-button-active-icon-sub-color-subdued: var(--tt-gray-dark-a-300);--tt-button-disabled-icon-sub-color: var(--tt-gray-dark-a-100)}.tiptap-button[data-style=primary]{--tt-button-default-dropdown-arrows-color: var(--white);--tt-button-hover-dropdown-arrows-color: var(--white);--tt-button-active-dropdown-arrows-color: var(--tt-gray-light-a-700);--tt-button-active-dropdown-arrows-color-emphasized: var( --tt-gray-light-a-700 );--tt-button-active-dropdown-arrows-color-subdued: var( --tt-gray-light-a-700 );--tt-button-disabled-dropdown-arrows-color: var(--tt-gray-light-a-400)}.dark .tiptap-button[data-style=primary]{--tt-button-default-dropdown-arrows-color: var(--white);--tt-button-hover-dropdown-arrows-color: var(--white);--tt-button-active-dropdown-arrows-color: var(--tt-gray-dark-a-600);--tt-button-active-dropdown-arrows-color-emphasized: var( --tt-gray-dark-a-600 );--tt-button-active-dropdown-arrows-color-subdued: var( --tt-gray-dark-a-600 );--tt-button-disabled-dropdown-arrows-color: var(--tt-gray-dark-a-400)}.tiptap-button-group{position:relative;display:flex;vertical-align:middle}.tiptap-button-group[data-orientation=vertical]{flex-direction:column;align-items:flex-start;justify-content:center;min-width:max-content}.tiptap-button-group[data-orientation=vertical]>.tiptap-button{width:100%}.tiptap-button-group[data-orientation=horizontal]{gap:.125rem;flex-direction:row;align-items:center}.tiptap-button{font-size:.875rem;font-weight:500;font-feature-settings:"salt" on,"cv01" on;line-height:1.15;height:2rem;min-width:2rem;border:none;padding:.5rem;gap:.25rem;display:flex;align-items:center;justify-content:center;border-radius:var(--tt-radius-lg, .75rem);transition-property:background,color,opacity;transition-duration:var(--tt-transition-duration-default);transition-timing-function:var(--tt-transition-easing-default)}.tiptap-button:focus-visible{outline:none}.tiptap-button[data-highlighted=true],.tiptap-button[data-focus-visible=true]{background-color:var(--tt-button-hover-bg-color);color:var(--tt-button-hover-text-color)}.tiptap-button[data-weight=small]{width:1.5rem;min-width:1.5rem;padding-right:0;padding-left:0}.tiptap-button[data-size=large]{font-size:.9375rem;height:2.375rem;min-width:2.375rem;padding:.625rem}.tiptap-button[data-size=small]{font-size:.75rem;line-height:1.2;height:1.5rem;min-width:1.5rem;padding:.3125rem;border-radius:var(--tt-radius-md, .5rem)}.tiptap-button .tiptap-button-text{padding:0 .125rem;flex-grow:1;text-align:left;line-height:1.5rem}.tiptap-button[data-text-trim=on] .tiptap-button-text{text-overflow:ellipsis;overflow:hidden}.tiptap-button .tiptap-button-icon,.tiptap-button .tiptap-button-icon-sub,.tiptap-button .tiptap-button-dropdown-arrows,.tiptap-button .tiptap-button-dropdown-small{flex-shrink:0}.tiptap-button .tiptap-button-icon{width:1rem;height:1rem}.tiptap-button[data-size=large] .tiptap-button-icon{width:1.125rem;height:1.125rem}.tiptap-button[data-size=small] .tiptap-button-icon{width:.875rem;height:.875rem}.tiptap-button .tiptap-button-icon-sub{width:1rem;height:1rem}.tiptap-button[data-size=large] .tiptap-button-icon-sub{width:1.125rem;height:1.125rem}.tiptap-button[data-size=small] .tiptap-button-icon-sub{width:.875rem;height:.875rem}.tiptap-button .tiptap-button-dropdown-arrows{width:.75rem;height:.75rem}.tiptap-button[data-size=large] .tiptap-button-dropdown-arrows{width:.875rem;height:.875rem}.tiptap-button[data-size=small] .tiptap-button-dropdown-arrows,.tiptap-button .tiptap-button-dropdown-small{width:.625rem;height:.625rem}.tiptap-button[data-size=large] .tiptap-button-dropdown-small{width:.75rem;height:.75rem}.tiptap-button[data-size=small] .tiptap-button-dropdown-small{width:.5rem;height:.5rem}.tiptap-button:has(>svg):not(:has(>:not(svg))){gap:.125rem}.tiptap-button:has(>svg):not(:has(>:not(svg)))[data-size=large],.tiptap-button:has(>svg):not(:has(>:not(svg)))[data-size=small]{gap:.125rem}.tiptap-button:has(>svg:nth-of-type(2)):has(>.tiptap-button-dropdown-small):not(:has(>svg:nth-of-type(3))):not(:has(>.tiptap-button-text)){gap:0;padding-right:.25rem}.tiptap-button:has(>svg:nth-of-type(2)):has(>.tiptap-button-dropdown-small):not(:has(>svg:nth-of-type(3))):not(:has(>.tiptap-button-text))[data-size=large]{padding-right:.375rem}.tiptap-button:has(>svg:nth-of-type(2)):has(>.tiptap-button-dropdown-small):not(:has(>svg:nth-of-type(3))):not(:has(>.tiptap-button-text))[data-size=small]{padding-right:.25rem}.tiptap-button .tiptap-button-emoji{width:1rem;display:flex;justify-content:center}.tiptap-button[data-size=large] .tiptap-button-emoji{width:1.125rem}.tiptap-button[data-size=small] .tiptap-button-emoji{width:.875rem}.tiptap-button{background-color:var(--tt-button-default-bg-color);color:var(--tt-button-default-text-color)}.tiptap-button .tiptap-button-icon{color:var(--tt-button-default-icon-color)}.tiptap-button .tiptap-button-icon-sub{color:var(--tt-button-default-icon-sub-color)}.tiptap-button .tiptap-button-dropdown-arrows,.tiptap-button .tiptap-button-dropdown-small{color:var(--tt-button-default-dropdown-arrows-color)}.tiptap-button:hover:not([data-active-item=true]):not([disabled]),.tiptap-button[data-active-item=true]:not([disabled]),.tiptap-button[data-highlighted]:not([disabled]):not([data-highlighted=false]){background-color:var(--tt-button-hover-bg-color);color:var(--tt-button-hover-text-color)}.tiptap-button:hover:not([data-active-item=true]):not([disabled]) .tiptap-button-icon,.tiptap-button[data-active-item=true]:not([disabled]) .tiptap-button-icon,.tiptap-button[data-highlighted]:not([disabled]):not([data-highlighted=false]) .tiptap-button-icon{color:var(--tt-button-hover-icon-color)}.tiptap-button:hover:not([data-active-item=true]):not([disabled]) .tiptap-button-icon-sub,.tiptap-button[data-active-item=true]:not([disabled]) .tiptap-button-icon-sub,.tiptap-button[data-highlighted]:not([disabled]):not([data-highlighted=false]) .tiptap-button-icon-sub{color:var(--tt-button-hover-icon-sub-color)}.tiptap-button:hover:not([data-active-item=true]):not([disabled]) .tiptap-button-dropdown-arrows,.tiptap-button:hover:not([data-active-item=true]):not([disabled]) .tiptap-button-dropdown-small,.tiptap-button[data-active-item=true]:not([disabled]) .tiptap-button-dropdown-arrows,.tiptap-button[data-active-item=true]:not([disabled]) .tiptap-button-dropdown-small,.tiptap-button[data-highlighted]:not([disabled]):not([data-highlighted=false]) .tiptap-button-dropdown-arrows,.tiptap-button[data-highlighted]:not([disabled]):not([data-highlighted=false]) .tiptap-button-dropdown-small{color:var(--tt-button-hover-dropdown-arrows-color)}.tiptap-button[data-active-state=on]:not([disabled]),.tiptap-button[data-state=open]:not([disabled]){background-color:var(--tt-button-active-bg-color);color:var(--tt-button-active-text-color)}.tiptap-button[data-active-state=on]:not([disabled]) .tiptap-button-icon,.tiptap-button[data-state=open]:not([disabled]) .tiptap-button-icon{color:var(--tt-button-active-icon-color)}.tiptap-button[data-active-state=on]:not([disabled]) .tiptap-button-icon-sub,.tiptap-button[data-state=open]:not([disabled]) .tiptap-button-icon-sub{color:var(--tt-button-active-icon-sub-color)}.tiptap-button[data-active-state=on]:not([disabled]) .tiptap-button-dropdown-arrows,.tiptap-button[data-active-state=on]:not([disabled]) .tiptap-button-dropdown-small,.tiptap-button[data-state=open]:not([disabled]) .tiptap-button-dropdown-arrows,.tiptap-button[data-state=open]:not([disabled]) .tiptap-button-dropdown-small{color:var(--tt-button-active-dropdown-arrows-color)}.tiptap-button[data-active-state=on]:not([disabled]):hover,.tiptap-button[data-state=open]:not([disabled]):hover{background-color:var(--tt-button-active-hover-bg-color)}.tiptap-button[data-active-state=on]:not([disabled])[data-appearance=emphasized],.tiptap-button[data-state=open]:not([disabled])[data-appearance=emphasized]{background-color:var(--tt-button-active-bg-color-emphasized);color:var(--tt-button-active-text-color-emphasized)}.tiptap-button[data-active-state=on]:not([disabled])[data-appearance=emphasized] .tiptap-button-icon,.tiptap-button[data-state=open]:not([disabled])[data-appearance=emphasized] .tiptap-button-icon{color:var(--tt-button-active-icon-color-emphasized)}.tiptap-button[data-active-state=on]:not([disabled])[data-appearance=emphasized] .tiptap-button-icon-sub,.tiptap-button[data-state=open]:not([disabled])[data-appearance=emphasized] .tiptap-button-icon-sub{color:var(--tt-button-active-icon-sub-color-emphasized)}.tiptap-button[data-active-state=on]:not([disabled])[data-appearance=emphasized] .tiptap-button-dropdown-arrows,.tiptap-button[data-active-state=on]:not([disabled])[data-appearance=emphasized] .tiptap-button-dropdown-small,.tiptap-button[data-state=open]:not([disabled])[data-appearance=emphasized] .tiptap-button-dropdown-arrows,.tiptap-button[data-state=open]:not([disabled])[data-appearance=emphasized] .tiptap-button-dropdown-small{color:var(--tt-button-active-dropdown-arrows-color-emphasized)}.tiptap-button[data-active-state=on]:not([disabled])[data-appearance=emphasized]:hover,.tiptap-button[data-state=open]:not([disabled])[data-appearance=emphasized]:hover{background-color:var(--tt-button-active-hover-bg-color-emphasized)}.tiptap-button[data-active-state=on]:not([disabled])[data-appearance=subdued],.tiptap-button[data-state=open]:not([disabled])[data-appearance=subdued]{background-color:var(--tt-button-active-bg-color-subdued);color:var(--tt-button-active-text-color-subdued)}.tiptap-button[data-active-state=on]:not([disabled])[data-appearance=subdued] .tiptap-button-icon,.tiptap-button[data-state=open]:not([disabled])[data-appearance=subdued] .tiptap-button-icon{color:var(--tt-button-active-icon-color-subdued)}.tiptap-button[data-active-state=on]:not([disabled])[data-appearance=subdued] .tiptap-button-icon-sub,.tiptap-button[data-state=open]:not([disabled])[data-appearance=subdued] .tiptap-button-icon-sub{color:var(--tt-button-active-icon-sub-color-subdued)}.tiptap-button[data-active-state=on]:not([disabled])[data-appearance=subdued] .tiptap-button-dropdown-arrows,.tiptap-button[data-active-state=on]:not([disabled])[data-appearance=subdued] .tiptap-button-dropdown-small,.tiptap-button[data-state=open]:not([disabled])[data-appearance=subdued] .tiptap-button-dropdown-arrows,.tiptap-button[data-state=open]:not([disabled])[data-appearance=subdued] .tiptap-button-dropdown-small{color:var(--tt-button-active-dropdown-arrows-color-subdued)}.tiptap-button[data-active-state=on]:not([disabled])[data-appearance=subdued]:hover,.tiptap-button[data-state=open]:not([disabled])[data-appearance=subdued]:hover{background-color:var(--tt-button-active-hover-bg-color-subdued)}.tiptap-button[data-active-state=on]:not([disabled])[data-appearance=subdued]:hover .tiptap-button-icon,.tiptap-button[data-state=open]:not([disabled])[data-appearance=subdued]:hover .tiptap-button-icon{color:var(--tt-button-active-icon-color-subdued)}.tiptap-button:disabled{background-color:var(--tt-button-disabled-bg-color);color:var(--tt-button-disabled-text-color)}.tiptap-button:disabled .tiptap-button-icon{color:var(--tt-button-disabled-icon-color)}.tiptap-badge{--tt-badge-border-color: var(--tt-gray-light-a-200);--tt-badge-border-color-subdued: var(--tt-gray-light-a-200);--tt-badge-border-color-emphasized: var(--tt-gray-light-a-600);--tt-badge-text-color: var(--tt-gray-light-a-500);--tt-badge-text-color-subdued: var( --tt-gray-light-a-400 );--tt-badge-text-color-emphasized: var( --tt-gray-light-a-600 );--tt-badge-bg-color: var(--white);--tt-badge-bg-color-subdued: var(--white);--tt-badge-bg-color-emphasized: var(--white);--tt-badge-icon-color: var(--tt-gray-light-a-500);--tt-badge-icon-color-subdued: var( --tt-gray-light-a-400 );--tt-badge-icon-color-emphasized: var( --tt-brand-color-600 )}.dark .tiptap-badge{--tt-badge-border-color: var(--tt-gray-dark-a-200);--tt-badge-border-color-subdued: var(--tt-gray-dark-a-200);--tt-badge-border-color-emphasized: var(--tt-gray-dark-a-500);--tt-badge-text-color: var(--tt-gray-dark-a-500);--tt-badge-text-color-subdued: var( --tt-gray-dark-a-400 );--tt-badge-text-color-emphasized: var( --tt-gray-dark-a-600 );--tt-badge-bg-color: var(--black);--tt-badge-bg-color-subdued: var(--black);--tt-badge-bg-color-emphasized: var(--black);--tt-badge-icon-color: var(--tt-gray-dark-a-500);--tt-badge-icon-color-subdued: var( --tt-gray-dark-a-400 );--tt-badge-icon-color-emphasized: var( --tt-brand-color-400 )}.tiptap-badge[data-style=ghost]{--tt-badge-border-color: var(--tt-gray-light-a-200);--tt-badge-border-color-subdued: var(--tt-gray-light-a-200);--tt-badge-border-color-emphasized: var(--tt-gray-light-a-600);--tt-badge-text-color: var(--tt-gray-light-a-500);--tt-badge-text-color-subdued: var( --tt-gray-light-a-400 );--tt-badge-text-color-emphasized: var( --tt-gray-light-a-600 );--tt-badge-bg-color: var(--transparent);--tt-badge-bg-color-subdued: var(--transparent);--tt-badge-bg-color-emphasized: var(--transparent);--tt-badge-icon-color: var(--tt-gray-light-a-500);--tt-badge-icon-color-subdued: var( --tt-gray-light-a-400 );--tt-badge-icon-color-emphasized: var( --tt-brand-color-600 )}.dark .tiptap-badge[data-style=ghost]{--tt-badge-border-color: var(--tt-gray-dark-a-200);--tt-badge-border-color-subdued: var(--tt-gray-dark-a-200);--tt-badge-border-color-emphasized: var(--tt-gray-dark-a-500);--tt-badge-text-color: var(--tt-gray-dark-a-500);--tt-badge-text-color-subdued: var( --tt-gray-dark-a-400 );--tt-badge-text-color-emphasized: var( --tt-gray-dark-a-600 );--tt-badge-bg-color: var(--transparent);--tt-badge-bg-color-subdued: var(--transparent);--tt-badge-bg-color-emphasized: var(--transparent);--tt-badge-icon-color: var(--tt-gray-dark-a-500);--tt-badge-icon-color-subdued: var( --tt-gray-dark-a-400 );--tt-badge-icon-color-emphasized: var( --tt-brand-color-400 )}.tiptap-badge[data-style=gray]{--tt-badge-border-color: var(--tt-gray-light-a-200);--tt-badge-border-color-subdued: var(--tt-gray-light-a-200);--tt-badge-border-color-emphasized: var(--tt-gray-light-a-500);--tt-badge-text-color: var(--tt-gray-light-a-500);--tt-badge-text-color-subdued: var( --tt-gray-light-a-400 );--tt-badge-text-color-emphasized: var(--white);--tt-badge-bg-color: var(--tt-gray-light-a-100);--tt-badge-bg-color-subdued: var( --tt-gray-light-a-50 );--tt-badge-bg-color-emphasized: var( --tt-gray-light-a-700 );--tt-badge-icon-color: var(--tt-gray-light-a-500);--tt-badge-icon-color-subdued: var( --tt-gray-light-a-400 );--tt-badge-icon-color-emphasized: var(--white)}.dark .tiptap-badge[data-style=gray]{--tt-badge-border-color: var(--tt-gray-dark-a-200);--tt-badge-border-color-subdued: var(--tt-gray-dark-a-200);--tt-badge-border-color-emphasized: var(--tt-gray-dark-a-500);--tt-badge-text-color: var(--tt-gray-dark-a-500);--tt-badge-text-color-subdued: var( --tt-gray-dark-a-400 );--tt-badge-text-color-emphasized: var(--black);--tt-badge-bg-color: var(--tt-gray-dark-a-100);--tt-badge-bg-color-subdued: var( --tt-gray-dark-a-50 );--tt-badge-bg-color-emphasized: var( --tt-gray-dark-a-800 );--tt-badge-icon-color: var(--tt-gray-dark-a-500);--tt-badge-icon-color-subdued: var( --tt-gray-dark-a-400 );--tt-badge-icon-color-emphasized: var(--black)}.tiptap-badge[data-style=green]{--tt-badge-border-color: var(--tt-color-green-inc-2);--tt-badge-border-color-subdued: var(--tt-color-green-inc-3);--tt-badge-border-color-emphasized: var(--tt-color-green-dec-2);--tt-badge-text-color: var(--tt-color-green-dec-3);--tt-badge-text-color-subdued: var( --tt-color-green-dec-2 );--tt-badge-text-color-emphasized: var( --tt-color-green-inc-5 );--tt-badge-bg-color: var(--tt-color-green-inc-4);--tt-badge-bg-color-subdued: var( --tt-color-green-inc-5 );--tt-badge-bg-color-emphasized: var( --tt-color-green-dec-1 );--tt-badge-icon-color: var(--tt-color-green-dec-3);--tt-badge-icon-color-subdued: var( --tt-color-green-dec-2 );--tt-badge-icon-color-emphasized: var( --tt-color-green-inc-5 )}.dark .tiptap-badge[data-style=green]{--tt-badge-border-color: var(--tt-color-green-dec-2);--tt-badge-border-color-subdued: var(--tt-color-green-dec-3);--tt-badge-border-color-emphasized: var(--tt-color-green-base);--tt-badge-text-color: var(--tt-color-green-inc-3);--tt-badge-text-color-subdued: var( --tt-color-green-inc-2 );--tt-badge-text-color-emphasized: var( --tt-color-green-dec-5 );--tt-badge-bg-color: var(--tt-color-green-dec-4);--tt-badge-bg-color-subdued: var( --tt-color-green-dec-5 );--tt-badge-bg-color-emphasized: var( --tt-color-green-inc-1 );--tt-badge-icon-color: var(--tt-color-green-inc-3);--tt-badge-icon-color-subdued: var( --tt-color-green-inc-2 );--tt-badge-icon-color-emphasized: var( --tt-color-green-dec-5 )}.tiptap-badge[data-style=yellow]{--tt-badge-border-color: var(--tt-color-yellow-inc-2);--tt-badge-border-color-subdued: var(--tt-color-yellow-inc-3);--tt-badge-border-color-emphasized: var(--tt-color-yellow-dec-1);--tt-badge-text-color: var(--tt-color-yellow-dec-3);--tt-badge-text-color-subdued: var( --tt-color-yellow-dec-2 );--tt-badge-text-color-emphasized: var( --tt-color-yellow-dec-3 );--tt-badge-bg-color: var(--tt-color-yellow-inc-4);--tt-badge-bg-color-subdued: var( --tt-color-yellow-inc-5 );--tt-badge-bg-color-emphasized: var( --tt-color-yellow-base );--tt-badge-icon-color: var(--tt-color-yellow-dec-3);--tt-badge-icon-color-subdued: var( --tt-color-yellow-dec-2 );--tt-badge-icon-color-emphasized: var( --tt-color-yellow-dec-3 )}.dark .tiptap-badge[data-style=yellow]{--tt-badge-border-color: var(--tt-color-yellow-dec-2);--tt-badge-border-color-subdued: var(--tt-color-yellow-dec-3);--tt-badge-border-color-emphasized: var(--tt-color-yellow-inc-1);--tt-badge-text-color: var(--tt-color-yellow-inc-3);--tt-badge-text-color-subdued: var( --tt-color-yellow-inc-2 );--tt-badge-text-color-emphasized: var( --tt-color-yellow-dec-3 );--tt-badge-bg-color: var(--tt-color-yellow-dec-4);--tt-badge-bg-color-subdued: var( --tt-color-yellow-dec-5 );--tt-badge-bg-color-emphasized: var( --tt-color-yellow-base );--tt-badge-icon-color: var(--tt-color-yellow-inc-3);--tt-badge-icon-color-subdued: var( --tt-color-yellow-inc-2 );--tt-badge-icon-color-emphasized: var( --tt-color-yellow-dec-3 )}.tiptap-badge[data-style=red]{--tt-badge-border-color: var(--tt-color-red-inc-2);--tt-badge-border-color-subdued: var(--tt-color-red-inc-3);--tt-badge-border-color-emphasized: var(--tt-color-red-dec-2);--tt-badge-text-color: var(--tt-color-red-dec-3);--tt-badge-text-color-subdued: var( --tt-color-red-dec-2 );--tt-badge-text-color-emphasized: var( --tt-color-red-inc-5 );--tt-badge-bg-color: var(--tt-color-red-inc-4);--tt-badge-bg-color-subdued: var( --tt-color-red-inc-5 );--tt-badge-bg-color-emphasized: var( --tt-color-red-dec-1 );--tt-badge-icon-color: var(--tt-color-red-dec-3);--tt-badge-icon-color-subdued: var( --tt-color-red-dec-2 );--tt-badge-icon-color-emphasized: var( --tt-color-red-inc-5 )}.dark .tiptap-badge[data-style=red]{--tt-badge-border-color: var(--tt-color-red-dec-2);--tt-badge-border-color-subdued: var(--tt-color-red-dec-3);--tt-badge-border-color-emphasized: var(--tt-color-red-base);--tt-badge-text-color: var(--tt-color-red-inc-3);--tt-badge-text-color-subdued: var( --tt-color-red-inc-2 );--tt-badge-text-color-emphasized: var( --tt-color-red-dec-5 );--tt-badge-bg-color: var(--tt-color-red-dec-4);--tt-badge-bg-color-subdued: var( --tt-color-red-dec-5 );--tt-badge-bg-color-emphasized: var( --tt-color-red-inc-1 );--tt-badge-icon-color: var(--tt-color-red-inc-3);--tt-badge-icon-color-subdued: var( --tt-color-red-inc-2 );--tt-badge-icon-color-emphasized: var( --tt-color-red-dec-5 )}.tiptap-badge[data-style=brand]{--tt-badge-border-color: var(--tt-brand-color-300);--tt-badge-border-color-subdued: var(--tt-brand-color-200);--tt-badge-border-color-emphasized: var(--tt-brand-color-600);--tt-badge-text-color: var(--tt-brand-color-800);--tt-badge-text-color-subdued: var( --tt-brand-color-700 );--tt-badge-text-color-emphasized: var( --tt-brand-color-50 );--tt-badge-bg-color: var(--tt-brand-color-100);--tt-badge-bg-color-subdued: var( --tt-brand-color-50 );--tt-badge-bg-color-emphasized: var( --tt-brand-color-600 );--tt-badge-icon-color: var(--tt-brand-color-800);--tt-badge-icon-color-subdued: var( --tt-brand-color-700 );--tt-badge-icon-color-emphasized: var( --tt-brand-color-100 )}.dark .tiptap-badge[data-style=brand]{--tt-badge-border-color: var(--tt-brand-color-700);--tt-badge-border-color-subdued: var(--tt-brand-color-800);--tt-badge-border-color-emphasized: var(--tt-brand-color-400);--tt-badge-text-color: var(--tt-brand-color-200);--tt-badge-text-color-subdued: var( --tt-brand-color-300 );--tt-badge-text-color-emphasized: var( --tt-brand-color-950 );--tt-badge-bg-color: var(--tt-brand-color-900);--tt-badge-bg-color-subdued: var( --tt-brand-color-950 );--tt-badge-bg-color-emphasized: var( --tt-brand-color-400 );--tt-badge-icon-color: var(--tt-brand-color-200);--tt-badge-icon-color-subdued: var( --tt-brand-color-300 );--tt-badge-icon-color-emphasized: var( --tt-brand-color-900 )}.tiptap-badge-group{align-items:center;display:flex;flex-wrap:wrap;gap:.25rem}.tiptap-badge-group [data-orientation=vertical]{flex-direction:column}.tiptap-badge-group [data-orientation=horizontal]{flex-direction:row}.tiptap-badge{font-size:.625rem;font-weight:700;font-feature-settings:"salt" on,"cv01" on;line-height:1.15;height:1.25rem;min-width:1.25rem;padding:.25rem;display:flex;align-items:center;justify-content:center;border:solid 1px;border-radius:var(--tt-radius-sm, .375rem);transition-property:background,color,opacity;transition-duration:var(--tt-transition-duration-default);transition-timing-function:var(--tt-transition-easing-default)}.tiptap-badge[data-size=large]{font-size:.75rem;height:1.5rem;min-width:1.5rem;padding:.375rem;border-radius:var(--tt-radius-md, .375rem)}.tiptap-badge[data-size=small]{height:1rem;min-width:1rem;padding:.125rem;border-radius:var(--tt-radius-xs, .25rem)}.tiptap-badge .tiptap-badge-text{padding:0 .125rem;flex-grow:1;text-align:left}.tiptap-badge[data-text-trim=on] .tiptap-badge-text{text-overflow:ellipsis;overflow:hidden}.tiptap-badge .tiptap-badge-icon{pointer-events:none;flex-shrink:0;width:.625rem;height:.625rem}.tiptap-badge[data-size=large] .tiptap-badge-icon{width:.75rem;height:.75rem}.tiptap-badge{background-color:var(--tt-badge-bg-color);border-color:var(--tt-badge-border-color);color:var(--tt-badge-text-color)}.tiptap-badge .tiptap-badge-icon{color:var(--tt-badge-icon-color)}.tiptap-badge[data-appearance=emphasized]{background-color:var(--tt-badge-bg-color-emphasized);border-color:var(--tt-badge-border-color-emphasized);color:var(--tt-badge-text-color-emphasized)}.tiptap-badge[data-appearance=emphasized] .tiptap-badge-icon{color:var(--tt-badge-icon-color-emphasized)}.tiptap-badge[data-appearance=subdued]{background-color:var(--tt-badge-bg-color-subdued);border-color:var(--tt-badge-border-color-subdued);color:var(--tt-badge-text-color-subdued)}.tiptap-badge[data-appearance=subdued] .tiptap-badge-icon{color:var(--tt-badge-icon-color-subdued)}.tiptap-popover{--tt-popover-bg-color: var(--white);--tt-popover-border-color: var(--tt-gray-light-a-100);--tt-popover-text-color: var(--tt-gray-light-a-600)}.dark .tiptap-popover{--tt-popover-border-color: var(--tt-gray-dark-a-50);--tt-popover-bg-color: var(--tt-gray-dark-50);--tt-popover-text-color: var(--tt-gray-dark-a-600)}.tiptap-popover{z-index:50;outline:none;transform-origin:var(--radix-popover-content-transform-origin);max-height:var(--radix-popover-content-available-height)}.tiptap-popover>*{max-height:var(--radix-popover-content-available-height)}.tiptap-popover[data-state=open]{animation:fadeIn .15s cubic-bezier(.16,1,.3,1),zoomIn .15s cubic-bezier(.16,1,.3,1)}.tiptap-popover[data-state=closed]{animation:fadeOut .15s cubic-bezier(.16,1,.3,1),zoomOut .15s cubic-bezier(.16,1,.3,1)}.tiptap-popover[data-side=top],.tiptap-popover[data-side=top-start],.tiptap-popover[data-side=top-end]{animation:slideFromBottom .15s cubic-bezier(.16,1,.3,1)}.tiptap-popover[data-side=right],.tiptap-popover[data-side=right-start],.tiptap-popover[data-side=right-end]{animation:slideFromLeft .15s cubic-bezier(.16,1,.3,1)}.tiptap-popover[data-side=bottom],.tiptap-popover[data-side=bottom-start],.tiptap-popover[data-side=bottom-end]{animation:slideFromTop .15s cubic-bezier(.16,1,.3,1)}.tiptap-popover[data-side=left],.tiptap-popover[data-side=left-start],.tiptap-popover[data-side=left-end]{animation:slideFromRight .15s cubic-bezier(.16,1,.3,1)}.tiptap-separator{--tt-link-border-color: var(--tt-gray-light-a-200)}.dark .tiptap-separator{--tt-link-border-color: var(--tt-gray-dark-a-200)}.tiptap-separator{flex-shrink:0;background-color:var(--tt-link-border-color)}.tiptap-separator[data-orientation=horizontal]{height:1px;width:100%;margin:.5rem 0}.tiptap-separator[data-orientation=vertical]{height:1.5rem;width:1px}:root{--tiptap-card-bg-color: var(--white);--tiptap-card-border-color: var(--tt-gray-light-a-100);--tiptap-card-group-label-color: var(--tt-gray-light-a-800)}.dark{--tiptap-card-bg-color: var(--tt-gray-dark-50);--tiptap-card-border-color: var(--tt-gray-dark-a-100);--tiptap-card-group-label-color: var(--tt-gray-dark-a-800)}.tiptap-card{--padding: .375rem;--border-width: 1px;border-radius:calc(var(--padding) + var(--tt-radius-lg));box-shadow:var(--tt-shadow-elevated-md);background-color:var(--tiptap-card-bg-color);border:1px solid var(--tiptap-card-border-color);display:flex;flex-direction:column;outline:none;align-items:center;position:relative;min-width:0;word-wrap:break-word;background-clip:border-box}.tiptap-card-header{padding:.375rem;flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;width:100%;border-bottom:var(--border-width) solid var(--tiptap-card-border-color)}.tiptap-card-body{padding:.375rem;flex:1 1 auto;overflow-y:auto}.tiptap-card-item-group{position:relative;display:flex;vertical-align:middle;min-width:max-content}.tiptap-card-item-group[data-orientation=vertical]{flex-direction:column;justify-content:center}.tiptap-card-item-group[data-orientation=horizontal]{gap:.25rem;flex-direction:row;align-items:center}.tiptap-card-group-label{padding:.75rem .5rem .25rem;font-size:.75rem;font-weight:600;line-height:normal;text-transform:capitalize;color:var(--tiptap-card-group-label-color)}.tiptap-button-highlight{position:relative;width:1.25rem;height:1.25rem;margin:0 -.175rem;border-radius:var(--tt-radius-xl);background-color:var(--highlight-color);transition:transform .2s ease}.tiptap-button-highlight:after{content:"";position:absolute;width:100%;height:100%;left:0;top:0;border-radius:inherit;box-sizing:border-box;border:1px solid var(--highlight-color);filter:brightness(95%);mix-blend-mode:multiply}.dark .tiptap-button-highlight:after{filter:brightness(140%);mix-blend-mode:lighten}.tiptap-button[data-active-state=on] .tiptap-button-highlight:after{filter:brightness(80%)}.dark .tiptap-button[data-active-state=on] .tiptap-button-highlight:after{filter:brightness(180%)}.tiptap-button-text-color{position:relative;width:1.25rem;height:1.25rem;margin:0 -.175rem;border-radius:var(--tt-radius-xl);background-color:var(--highlight-color);transition:transform .2s ease}.tiptap-button-text-color:after{content:"";position:absolute;width:100%;height:100%;left:0;top:0;border-radius:inherit;box-sizing:border-box;border:1px solid var(--highlight-color);filter:brightness(95%);mix-blend-mode:multiply}.dark .tiptap-button-text-color:after{filter:brightness(140%);mix-blend-mode:lighten}.tiptap-button[data-active-state=on] .tiptap-button-text-color:after{filter:brightness(80%)}.dark .tiptap-button[data-active-state=on] .tiptap-button-text-color:after{filter:brightness(180%)}.font-family-select{height:32px;padding:4px 8px;border:1px solid #e2e8f0;border-radius:4px;background-color:#fff;font-size:14px;cursor:pointer;min-width:140px}.font-family-select:hover{border-color:#cbd5e1}.font-family-select:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 1px #3b82f6}.font-family-select option{padding:4px}
1
+ @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-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-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}:root{overflow-wrap:break-word;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--tt-gray-light-a-50:#3838380a;--tt-gray-light-a-100:#0f16240d;--tt-gray-light-a-200:#25272d1a;--tt-gray-light-a-300:#2f323733;--tt-gray-light-a-400:#282c336b;--tt-gray-light-a-500:#34373ca3;--tt-gray-light-a-600:#24272ec7;--tt-gray-light-a-700:#23252ade;--tt-gray-light-a-800:#1e2024f2;--tt-gray-light-a-900:#1d1e20fa;--tt-gray-light-50:#fafafa;--tt-gray-light-100:#f4f4f5;--tt-gray-light-200:#eaeaeb;--tt-gray-light-300:#d5d6d7;--tt-gray-light-400:#a6a7ab;--tt-gray-light-500:#7d7f82;--tt-gray-light-600:#53565a;--tt-gray-light-700:#404145;--tt-gray-light-800:#2c2d30;--tt-gray-light-900:#222325;--tt-gray-dark-a-50:#e8e8fd0d;--tt-gray-dark-a-100:#e7e7f312;--tt-gray-dark-a-200:#eeeef61c;--tt-gray-dark-a-300:#efeff538;--tt-gray-dark-a-400:#f4f4ff5e;--tt-gray-dark-a-500:#eceefd80;--tt-gray-dark-a-600:#f7f7fda3;--tt-gray-dark-a-700:#fbfbfebf;--tt-gray-dark-a-800:#fdfdfde0;--tt-gray-dark-a-900:#fffffff5;--tt-gray-dark-50:#19191a;--tt-gray-dark-100:#202022;--tt-gray-dark-200:#2d2d2f;--tt-gray-dark-300:#464649;--tt-gray-dark-400:#636369;--tt-gray-dark-500:#7c7c83;--tt-gray-dark-600:#a3a3a8;--tt-gray-dark-700:#c0c0c3;--tt-gray-dark-800:#e0e0e1;--tt-gray-dark-900:#f5f5f5;--tt-brand-color-50:#efeeff;--tt-brand-color-100:#dedbff;--tt-brand-color-200:#c3bdff;--tt-brand-color-300:#9d8aff;--tt-brand-color-400:#7a52ff;--tt-brand-color-500:#6229ff;--tt-brand-color-600:#5400e5;--tt-brand-color-700:#4b00cc;--tt-brand-color-800:#380099;--tt-brand-color-900:#2b1966;--tt-brand-color-950:#0d002e;--tt-color-green-inc-5:#f0fff2;--tt-color-green-inc-4:#d6ffdc;--tt-color-green-inc-3:#b8ffc5;--tt-color-green-inc-2:#90fea8;--tt-color-green-inc-1:#67fe92;--tt-color-green-base:#01fe73;--tt-color-green-dec-1:#03ce5e;--tt-color-green-dec-2:#02a247;--tt-color-green-dec-3:#007a35;--tt-color-green-dec-4:#005221;--tt-color-green-dec-5:#002e0f;--tt-color-yellow-inc-5:#fffcf0;--tt-color-yellow-inc-4:#fff7d1;--tt-color-yellow-inc-3:#fff1ad;--tt-color-yellow-inc-2:#ffeb8a;--tt-color-yellow-inc-1:#ffe45c;--tt-color-yellow-base:#fd0;--tt-color-yellow-dec-1:#d1b500;--tt-color-yellow-dec-2:#a38d00;--tt-color-yellow-dec-3:#7a6a00;--tt-color-yellow-dec-4:#524500;--tt-color-yellow-dec-5:#2e2600;--tt-color-red-inc-5:#ffeeeb;--tt-color-red-inc-4:#ffcdc2;--tt-color-red-inc-3:#fa9;--tt-color-red-inc-2:#ff8a75;--tt-color-red-inc-1:#ff5d47;--tt-color-red-base:#ff3014;--tt-color-red-dec-1:#d11800;--tt-color-red-dec-2:#a30e00;--tt-color-red-dec-3:#7a0800;--tt-color-red-dec-4:#520400;--tt-color-red-dec-5:#2e0100;--white:#fff;--black:#0e0e11;--transparent:#fff0;--tt-shadow-elevated-md:0px 16px 48px 0px #1118270a,0px 12px 24px 0px #1118270a,0px 6px 8px 0px #11182705,0px 2px 3px 0px #11182705;--tt-radius-xxs:.125rem;--tt-radius-xs:.25rem;--tt-radius-sm:.375rem;--tt-radius-md:.5rem;--tt-radius-lg:.75rem;--tt-radius-xl:1rem;--tt-transition-duration-short:.1s;--tt-transition-duration-default:.2s;--tt-transition-duration-long:.64s;--tt-transition-easing-default:cubic-bezier(.46,.03,.52,.96);--tt-transition-easing-cubic:cubic-bezier(.65,.05,.36,1);--tt-transition-easing-quart:cubic-bezier(.77,0,.18,1);--tt-transition-easing-circ:cubic-bezier(.79,.14,.15,.86);--tt-transition-easing-back:cubic-bezier(.68,-.55,.27,1.55);--tt-accent-contrast:8%;--tt-destructive-contrast:8%;--tt-foreground-contrast:8%}:root,:root *,:root :before,:root :after{box-sizing:border-box;transition:none var(--tt-transition-duration-default)var(--tt-transition-easing-default)}:root{--tt-bg-color:var(--white);--tt-border-color:var(--tt-gray-light-a-200);--tt-border-color-tint:var(--tt-gray-light-a-100);--tt-sidebar-bg-color:var(--tt-gray-light-100);--tt-scrollbar-color:var(--tt-gray-light-a-200);--tt-cursor-color:var(--tt-brand-color-500);--tt-selection-color:#9d8aff33;--tt-card-bg-color:var(--white);--tt-card-border-color:var(--tt-gray-light-a-100)}.dark{--tt-bg-color:var(--black);--tt-border-color:var(--tt-gray-dark-a-200);--tt-border-color-tint:var(--tt-gray-dark-a-100);--tt-sidebar-bg-color:var(--tt-gray-dark-100);--tt-scrollbar-color:var(--tt-gray-dark-a-200);--tt-cursor-color:var(--tt-brand-color-400);--tt-selection-color:#7a52ff33;--tt-card-bg-color:var(--tt-gray-dark-50);--tt-card-border-color:var(--tt-gray-dark-a-50);--tt-shadow-elevated-md:0px 16px 48px 0px #00000080,0px 12px 24px 0px #0000003d,0px 6px 8px 0px #00000038,0px 2px 3px 0px #0000001f}:root{--tt-color-text-gray:#787673;--tt-color-text-brown:#9d6a53;--tt-color-text-orange:#d9730d;--tt-color-text-yellow:#ca922f;--tt-color-text-green:#448361;--tt-color-text-blue:#327da9;--tt-color-text-purple:#8f64af;--tt-color-text-pink:#c24c8b;--tt-color-text-red:#d34a45;--tt-color-text-gray-contrast:#54473126;--tt-color-text-brown-contrast:#d2a28e59;--tt-color-text-orange-contrast:#e07b3845;--tt-color-text-yellow-contrast:#ecbe4163;--tt-color-text-green-contrast:#7bb78145;--tt-color-text-blue-contrast:#5ea6cf45;--tt-color-text-purple-contrast:#a881c545;--tt-color-text-pink-contrast:#e189b445;--tt-color-text-red-contrast:#f4aa9f66}.dark{--tt-color-text-gray:#9c9c9c;--tt-color-text-brown:#b9856e;--tt-color-text-orange:#c77d48;--tt-color-text-yellow:#ca994e;--tt-color-text-green:#519e71;--tt-color-text-blue:#3699d3;--tt-color-text-purple:#9e69d3;--tt-color-text-pink:#d15796;--tt-color-text-red:#df5553;--tt-color-text-gray-contrast:#ffffff17;--tt-color-text-brown-contrast:#b9674640;--tt-color-text-orange-contrast:#e97d2533;--tt-color-text-yellow-contrast:#b3823d33;--tt-color-text-green-contrast:#2d9a6533;--tt-color-text-blue-contrast:#327da933;--tt-color-text-purple-contrast:#9b60d22e;--tt-color-text-pink-contrast:#dc4c9238;--tt-color-text-red-contrast:#dd555540}:root{--tt-color-highlight-yellow:#fef9c3;--tt-color-highlight-green:#dcfce7;--tt-color-highlight-blue:#e0f2fe;--tt-color-highlight-purple:#f3e8ff;--tt-color-highlight-red:#ffe4e6;--tt-color-highlight-gray:#f8f8f7;--tt-color-highlight-brown:#f4eeee;--tt-color-highlight-orange:#fbecdd;--tt-color-highlight-pink:#fcf1f6;--tt-color-highlight-yellow-contrast:#fbe604;--tt-color-highlight-green-contrast:#c7fad8;--tt-color-highlight-blue-contrast:#ceeafd;--tt-color-highlight-purple-contrast:#e4ccff;--tt-color-highlight-red-contrast:#ffccd0;--tt-color-highlight-gray-contrast:#54483126;--tt-color-highlight-brown-contrast:#d2a28d59;--tt-color-highlight-orange-contrast:#e07c3945;--tt-color-highlight-pink-contrast:#e188b345}.dark{--tt-color-highlight-yellow:#6b6524;--tt-color-highlight-green:#509568;--tt-color-highlight-blue:#6e92aa;--tt-color-highlight-purple:#583e74;--tt-color-highlight-red:#743e42;--tt-color-highlight-gray:#2f2f2f;--tt-color-highlight-brown:#4a3228;--tt-color-highlight-orange:#5c3b23;--tt-color-highlight-pink:#4e2c3c;--tt-color-highlight-yellow-contrast:#58531e;--tt-color-highlight-green-contrast:#47855d;--tt-color-highlight-blue-contrast:#5e86a1;--tt-color-highlight-purple-contrast:#4c3564;--tt-color-highlight-red-contrast:#643539;--tt-color-highlight-gray-contrast:#ffffff18;--tt-color-highlight-brown-contrast:#b8654540;--tt-color-highlight-orange-contrast:#e97e2533;--tt-color-highlight-pink-contrast:#dc4c9138}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes zoomIn{0%{transform:scale(.95)}to{transform:scale(1)}}@keyframes zoomOut{0%{transform:scale(1)}to{transform:scale(.95)}}@keyframes zoom{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes slideFromTop{0%{transform:translateY(-.5rem)}to{transform:translateY(0)}}@keyframes slideFromRight{0%{transform:translate(.5rem)}to{transform:translate(0)}}@keyframes slideFromLeft{0%{transform:translate(-.5rem)}to{transform:translate(0)}}@keyframes slideFromBottom{0%{transform:translateY(.5rem)}to{transform:translateY(0)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-600:oklch(64.6% .222 41.116);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-teal-500:oklch(70.4% .14 182.503);--color-teal-600:oklch(60% .118 184.704);--color-cyan-500:oklch(71.5% .143 215.221);--color-cyan-600:oklch(60.9% .126 221.723);--color-cyan-700:oklch(52% .105 223.128);--color-sky-500:oklch(68.5% .169 237.323);--color-sky-600:oklch(58.8% .158 241.966);--color-sky-700:oklch(50% .134 242.749);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-indigo-500:oklch(58.5% .233 277.117);--color-indigo-600:oklch(51.1% .262 276.966);--color-violet-500:oklch(60.6% .25 292.717);--color-violet-600:oklch(54.1% .281 293.009);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-600:oklch(55.8% .288 302.321);--color-fuchsia-500:oklch(66.7% .295 322.15);--color-fuchsia-600:oklch(59.1% .293 322.896);--color-pink-500:oklch(65.6% .241 354.308);--color-pink-600:oklch(59.2% .249 .584);--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-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--radius-xs:.125rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring)50%,transparent)}}body{background-color:var(--background);color:var(--foreground)}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.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}.inset-0{inset:calc(var(--spacing)*0)}.inset-x-0{inset-inline:calc(var(--spacing)*0)}.inset-y-0{inset-block:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.top-4{top:calc(var(--spacing)*4)}.right-0{right:calc(var(--spacing)*0)}.right-4{right:calc(var(--spacing)*4)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-4{bottom:calc(var(--spacing)*4)}.left-0{left:calc(var(--spacing)*0)}.left-4{left:calc(var(--spacing)*4)}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[9998\]{z-index:9998}.z-\[9999\]{z-index:9999}.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}}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-auto{margin-top:auto}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.size-10{width:calc(var(--spacing)*10);height:calc(var(--spacing)*10)}.size-full{width:100%;height:100%}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-\[500px\]{height:500px}.h-\[calc\(100\%-60px\)\]{height:calc(100% - 60px)}.h-auto{height:auto}.h-full{height:100%}.max-h-40{max-height:calc(var(--spacing)*40)}.w-3\/4{width:75%}.w-6{width:calc(var(--spacing)*6)}.w-8{width:calc(var(--spacing)*8)}.w-\[320px\]{width:320px}.w-\[700px\]{width:700px}.w-full{width:100%}.max-w-xs{max-width:var(--container-xs)}.min-w-16{min-width:calc(var(--spacing)*16)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.cursor-grab{cursor:grab}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-4{gap:calc(var(--spacing)*4)}: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)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-xs{border-radius:var(--radius-xs)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-blue-500{border-color:var(--color-blue-500)}.border-blue-600{border-color:var(--color-blue-600)}.border-border{border-color:var(--border)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.bg-amber-500{background-color:var(--color-amber-500)}.bg-background{background-color:var(--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-blue-500{background-color:var(--color-blue-500)}.bg-cyan-500{background-color:var(--color-cyan-500)}.bg-cyan-600{background-color:var(--color-cyan-600)}.bg-destructive{background-color:var(--destructive)}.bg-fuchsia-500{background-color:var(--color-fuchsia-500)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-green-500{background-color:var(--color-green-500)}.bg-indigo-500{background-color:var(--color-indigo-500)}.bg-orange-500{background-color:var(--color-orange-500)}.bg-pink-500{background-color:var(--color-pink-500)}.bg-primary{background-color:var(--primary)}.bg-purple-500{background-color:var(--color-purple-500)}.bg-red-500{background-color:var(--color-red-500)}.bg-secondary{background-color:var(--secondary)}.bg-sky-500{background-color:var(--color-sky-500)}.bg-sky-600{background-color:var(--color-sky-600)}.bg-teal-500{background-color:var(--color-teal-500)}.bg-violet-500{background-color:var(--color-violet-500)}.bg-white{background-color:var(--color-white)}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing)*0)}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.p-10{padding:calc(var(--spacing)*10)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-12{padding-block:calc(var(--spacing)*12)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-4{padding-top:calc(var(--spacing)*4)}.text-center{text-align:center}.text-left{text-align:left}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-foreground{color:var(--foreground)}.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-gray-800{color:var(--color-gray-800)}.text-muted-foreground{color:var(--muted-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.italic{font-style:italic}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.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-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)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);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-blue-200{--tw-ring-color:var(--color-blue-200)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.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-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-200{--tw-duration:.2s;transition-duration:.2s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.outline-none{--tw-outline-style:none;outline-style:none}@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-gray-400:hover{border-color:var(--color-gray-400)}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-amber-600:hover{background-color:var(--color-amber-600)}.hover\:bg-blue-600:hover{background-color:var(--color-blue-600)}.hover\:bg-cyan-600:hover{background-color:var(--color-cyan-600)}.hover\:bg-cyan-700:hover{background-color:var(--color-cyan-700)}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}.hover\:bg-fuchsia-600:hover{background-color:var(--color-fuchsia-600)}.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-200:hover{background-color:var(--color-gray-200)}.hover\:bg-green-600:hover{background-color:var(--color-green-600)}.hover\:bg-indigo-600:hover{background-color:var(--color-indigo-600)}.hover\:bg-orange-600:hover{background-color:var(--color-orange-600)}.hover\:bg-pink-600:hover{background-color:var(--color-pink-600)}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}.hover\:bg-purple-600:hover{background-color:var(--color-purple-600)}.hover\:bg-red-600:hover{background-color:var(--color-red-600)}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary)80%,transparent)}}.hover\:bg-sky-600:hover{background-color:var(--color-sky-600)}.hover\:bg-sky-700:hover{background-color:var(--color-sky-700)}.hover\:bg-teal-600:hover{background-color:var(--color-teal-600)}.hover\:bg-violet-600:hover{background-color:var(--color-violet-600)}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-gray-600:hover{color:var(--color-gray-600)}.hover\:text-gray-900:hover{color:var(--color-gray-900)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-sm:hover{--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)}}.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-ring:focus{--tw-ring-color:var(--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-hidden:focus{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + 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-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:duration-300[data-state=closed]{--tw-duration:.3s;transition-duration:.3s}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y:100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x:-100%}.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x:100%}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y:-100%}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:var(--secondary)}.data-\[state\=open\]\:duration-500[data-state=open]{--tw-duration:.5s;transition-duration:.5s}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y:100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x:-100%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x:100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y:-100%}@media(min-width:40rem){.sm\:max-w-sm{max-width:var(--container-sm)}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-destructive\/60:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive)60%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input)30%,transparent)}}.dark\:text-gray-400:is(.dark *){color:var(--color-gray-400)}.dark\:text-gray-500:is(.dark *){color:var(--color-gray-500)}@media(hover:hover){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.dark\:hover\:bg-gray-700:is(.dark *):hover{background-color:var(--color-gray-700)}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input)50%,transparent)}}.dark\:hover\:text-gray-100:is(.dark *):hover{color:var(--color-gray-100)}.dark\:hover\:text-gray-300:is(.dark *):hover{color:var(--color-gray-300)}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--radius:.625rem;--background:oklch(100% 0 0);--foreground:oklch(14.5% 0 0);--card:oklch(100% 0 0);--card-foreground:oklch(14.5% 0 0);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.5% 0 0);--primary:oklch(20.5% 0 0);--primary-foreground:oklch(98.5% 0 0);--secondary:oklch(97% 0 0);--secondary-foreground:oklch(20.5% 0 0);--muted:oklch(97% 0 0);--muted-foreground:oklch(55.6% 0 0);--accent:oklch(97% 0 0);--accent-foreground:oklch(20.5% 0 0);--destructive:oklch(57.7% .245 27.325);--border:oklch(92.2% 0 0);--input:oklch(92.2% 0 0);--ring:oklch(70.8% 0 0);--chart-1:oklch(64.6% .222 41.116);--chart-2:oklch(60% .118 184.704);--chart-3:oklch(39.8% .07 227.392);--chart-4:oklch(82.8% .189 84.429);--chart-5:oklch(76.9% .188 70.08);--sidebar:oklch(98.5% 0 0);--sidebar-foreground:oklch(14.5% 0 0);--sidebar-primary:oklch(20.5% 0 0);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(97% 0 0);--sidebar-accent-foreground:oklch(20.5% 0 0);--sidebar-border:oklch(92.2% 0 0);--sidebar-ring:oklch(70.8% 0 0)}.dark{--background:oklch(14.5% 0 0);--foreground:oklch(98.5% 0 0);--card:oklch(20.5% 0 0);--card-foreground:oklch(98.5% 0 0);--popover:oklch(20.5% 0 0);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(92.2% 0 0);--primary-foreground:oklch(20.5% 0 0);--secondary:oklch(26.9% 0 0);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(26.9% 0 0);--muted-foreground:oklch(70.8% 0 0);--accent:oklch(26.9% 0 0);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(70.4% .191 22.216);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(55.6% 0 0);--chart-1:oklch(48.8% .243 264.376);--chart-2:oklch(69.6% .17 162.48);--chart-3:oklch(76.9% .188 70.08);--chart-4:oklch(62.7% .265 303.9);--chart-5:oklch(64.5% .246 16.439);--sidebar:oklch(20.5% 0 0);--sidebar-foreground:oklch(98.5% 0 0);--sidebar-primary:oklch(48.8% .243 264.376);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(26.9% 0 0);--sidebar-accent-foreground:oklch(98.5% 0 0);--sidebar-border:oklch(100% 0 0/.1);--sidebar-ring:oklch(55.6% 0 0)}@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-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-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@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}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}.whiteboard{background-color:#f9fafb;.grid-dot{fill:#6e6e6e}}.whiteboard[data-theme=dark]{background-color:#151515;.grid-dot{fill:#666}}.ProseMirror{outline:2px solid #3b82f6}.tiptap{:first-child{margin-top:0}ul,ol{padding:0 1rem;margin:1.25rem 1rem 1.25rem .4rem;li p{margin-top:.25em;margin-bottom:.25em}}h1,h2,h3,h4,h5,h6{line-height:1.1;margin-top:2.5rem;text-wrap:pretty}h1,h2{margin-top:3.5rem;margin-bottom:1.5rem}h1{font-size:1.4rem}h2{font-size:1.2rem}h3{font-size:1.1rem}h4,h5,h6{font-size:1rem}code{background-color:var(--purple-light);border-radius:.4rem;color:var(--black);font-size:.85rem;padding:.25em .3em}pre{background:var(--black);border-radius:.5rem;color:var(--white);font-family:JetBrainsMono,monospace;margin:1.5rem 0;padding:.75rem 1rem;code{background:none;color:inherit;font-size:.8rem;padding:0}}blockquote{border-left:3px solid var(--gray-3);margin:1.5rem 0;padding-left:1rem}hr{border:none;border-top:1px solid var(--gray-2);margin:2rem 0}}.bubble-menu{background-color:var(--white);border:1px solid var(--gray-1);border-radius:.7rem;box-shadow:var(--shadow);display:flex;padding:.2rem;button{background-color:unset;&:hover{background-color:var(--gray-3)}&.is-active{background-color:var(--purple);&:hover{background-color:var(--purple-contrast)}}}}.tiptap-tooltip{--tt-tooltip-bg: var(--tt-gray-light-900);--tt-tooltip-text: var(--white);--tt-kbd: var(--tt-gray-dark-a-400)}.dark .tiptap-tooltip{--tt-tooltip-bg: var(--white);--tt-tooltip-text: var(--tt-gray-light-600);--tt-kbd: var(--tt-gray-light-a-400)}.tiptap-tooltip{z-index:200;overflow:hidden;border-radius:var(--tt-radius-md, .375rem);background-color:var(--tt-tooltip-bg);padding:.375rem .5rem;font-size:.75rem;font-weight:500;color:var(--tt-tooltip-text);box-shadow:0 4px 6px -1px #0000001a;text-align:center}.tiptap-tooltip kbd{display:inline-block;text-align:center;vertical-align:baseline;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;text-transform:capitalize;color:var(--tt-kbd)}.tiptap-button{--tt-button-default-bg-color: var(--tt-gray-light-a-100);--tt-button-hover-bg-color: var(--tt-gray-light-200);--tt-button-active-bg-color: var(--tt-gray-light-a-200);--tt-button-active-bg-color-emphasized: var( --tt-brand-color-100 );--tt-button-active-bg-color-subdued: var( --tt-gray-light-a-200 );--tt-button-active-hover-bg-color: var(--tt-gray-light-300);--tt-button-active-hover-bg-color-emphasized: var( --tt-brand-color-200 );--tt-button-active-hover-bg-color-subdued: var( --tt-gray-light-a-300 );--tt-button-disabled-bg-color: var(--tt-gray-light-a-50)}.dark .tiptap-button{--tt-button-default-bg-color: var(--tt-gray-dark-a-100);--tt-button-hover-bg-color: var(--tt-gray-dark-200);--tt-button-active-bg-color: var(--tt-gray-dark-a-200);--tt-button-active-bg-color-emphasized: var( --tt-brand-color-900 );--tt-button-active-bg-color-subdued: var( --tt-gray-dark-a-200 );--tt-button-active-hover-bg-color: var(--tt-gray-dark-300);--tt-button-active-hover-bg-color-emphasized: var( --tt-brand-color-800 );--tt-button-active-hover-bg-color-subdued: var( --tt-gray-dark-a-300 );--tt-button-disabled-bg-color: var(--tt-gray-dark-a-50)}.tiptap-button{--tt-button-default-text-color: var(--tt-gray-light-a-600);--tt-button-hover-text-color: var(--tt-gray-light-a-900);--tt-button-active-text-color: var(--tt-gray-light-a-900);--tt-button-active-text-color-emphasized: var(--tt-gray-light-a-900);--tt-button-active-text-color-subdued: var(--tt-gray-light-a-900);--tt-button-disabled-text-color: var(--tt-gray-light-a-400)}.dark .tiptap-button{--tt-button-default-text-color: var(--tt-gray-dark-a-600);--tt-button-hover-text-color: var(--tt-gray-dark-a-900);--tt-button-active-text-color: var(--tt-gray-dark-a-900);--tt-button-active-text-color-emphasized: var(--tt-gray-dark-a-900);--tt-button-active-text-color-subdued: var(--tt-gray-dark-a-900);--tt-button-disabled-text-color: var(--tt-gray-dark-a-300)}.tiptap-button{--tt-button-default-icon-color: var(--tt-gray-light-a-600);--tt-button-hover-icon-color: var(--tt-gray-light-a-900);--tt-button-active-icon-color: var(--tt-brand-color-500);--tt-button-active-icon-color-emphasized: var(--tt-brand-color-600);--tt-button-active-icon-color-subdued: var(--tt-gray-light-a-900);--tt-button-disabled-icon-color: var(--tt-gray-light-a-400)}.dark .tiptap-button{--tt-button-default-icon-color: var(--tt-gray-dark-a-600);--tt-button-hover-icon-color: var(--tt-gray-dark-a-900);--tt-button-active-icon-color: var(--tt-brand-color-400);--tt-button-active-icon-color-emphasized: var(--tt-brand-color-400);--tt-button-active-icon-color-subdued: var(--tt-gray-dark-a-900);--tt-button-disabled-icon-color: var(--tt-gray-dark-a-400)}.tiptap-button{--tt-button-default-icon-sub-color: var(--tt-gray-light-a-400);--tt-button-hover-icon-sub-color: var(--tt-gray-light-a-500);--tt-button-active-icon-sub-color: var(--tt-gray-light-a-400);--tt-button-active-icon-sub-color-emphasized: var(--tt-gray-light-a-500);--tt-button-active-icon-sub-color-subdued: var(--tt-gray-light-a-400);--tt-button-disabled-icon-sub-color: var(--tt-gray-light-a-100)}.dark .tiptap-button{--tt-button-default-icon-sub-color: var(--tt-gray-dark-a-300);--tt-button-hover-icon-sub-color: var(--tt-gray-dark-a-400);--tt-button-active-icon-sub-color: var(--tt-gray-dark-a-300);--tt-button-active-icon-sub-color-emphasized: var(--tt-gray-dark-a-400);--tt-button-active-icon-sub-color-subdued: var(--tt-gray-dark-a-300);--tt-button-disabled-icon-sub-color: var(--tt-gray-dark-a-100)}.tiptap-button{--tt-button-default-dropdown-arrows-color: var(--tt-gray-light-a-600);--tt-button-hover-dropdown-arrows-color: var(--tt-gray-light-a-700);--tt-button-active-dropdown-arrows-color: var(--tt-gray-light-a-600);--tt-button-active-dropdown-arrows-color-emphasized: var( --tt-gray-light-a-700 );--tt-button-active-dropdown-arrows-color-subdued: var(--tt-gray-light-a-600);--tt-button-disabled-dropdown-arrows-color: var(--tt-gray-light-a-400)}.dark .tiptap-button{--tt-button-default-dropdown-arrows-color: var(--tt-gray-dark-a-600);--tt-button-hover-dropdown-arrows-color: var(--tt-gray-dark-a-700);--tt-button-active-dropdown-arrows-color: var(--tt-gray-dark-a-600);--tt-button-active-dropdown-arrows-color-emphasized: var( --tt-gray-dark-a-700 );--tt-button-active-dropdown-arrows-color-subdued: var(--tt-gray-dark-a-600);--tt-button-disabled-dropdown-arrows-color: var(--tt-gray-dark-a-400)}.tiptap-button[data-style=ghost]{--tt-button-default-bg-color: var(--transparent);--tt-button-hover-bg-color: var(--tt-gray-light-200);--tt-button-active-bg-color: var(--tt-gray-light-a-100);--tt-button-active-bg-color-emphasized: var( --tt-brand-color-100 );--tt-button-active-bg-color-subdued: var( --tt-gray-light-a-100 );--tt-button-active-hover-bg-color: var(--tt-gray-light-200);--tt-button-active-hover-bg-color-emphasized: var( --tt-brand-color-200 );--tt-button-active-hover-bg-color-subdued: var( --tt-gray-light-a-200 );--tt-button-disabled-bg-color: var(--transparent)}.dark .tiptap-button[data-style=ghost]{--tt-button-default-bg-color: var(--transparent);--tt-button-hover-bg-color: var(--tt-gray-dark-200);--tt-button-active-bg-color: var(--tt-gray-dark-a-100);--tt-button-active-bg-color-emphasized: var( --tt-brand-color-900 );--tt-button-active-bg-color-subdued: var( --tt-gray-dark-a-100 );--tt-button-active-hover-bg-color: var(--tt-gray-dark-200);--tt-button-active-hover-bg-color-emphasized: var( --tt-brand-color-800 );--tt-button-active-hover-bg-color-subdued: var( --tt-gray-dark-a-200 );--tt-button-disabled-bg-color: var(--transparent)}.tiptap-button[data-style=ghost]{--tt-button-default-text-color: var(--tt-gray-light-a-600);--tt-button-hover-text-color: var(--tt-gray-light-a-900);--tt-button-active-text-color: var(--tt-gray-light-a-900);--tt-button-active-text-color-emphasized: var(--tt-gray-light-a-900);--tt-button-active-text-color-subdued: var(--tt-gray-light-a-900);--tt-button-disabled-text-color: var(--tt-gray-light-a-400)}.dark .tiptap-button[data-style=ghost]{--tt-button-default-text-color: var(--tt-gray-dark-a-600);--tt-button-hover-text-color: var(--tt-gray-dark-a-900);--tt-button-active-text-color: var(--tt-gray-dark-a-900);--tt-button-active-text-color-emphasized: var(--tt-gray-dark-a-900);--tt-button-active-text-color-subdued: var(--tt-gray-dark-a-900);--tt-button-disabled-text-color: var(--tt-gray-dark-a-300)}.tiptap-button[data-style=ghost]{--tt-button-default-icon-color: var(--tt-gray-light-a-600);--tt-button-hover-icon-color: var(--tt-gray-light-a-900);--tt-button-active-icon-color: var(--tt-brand-color-500);--tt-button-active-icon-color-emphasized: var(--tt-brand-color-600);--tt-button-active-icon-color-subdued: var(--tt-gray-light-a-900);--tt-button-disabled-icon-color: var(--tt-gray-light-a-400)}.dark .tiptap-button[data-style=ghost]{--tt-button-default-icon-color: var(--tt-gray-dark-a-600);--tt-button-hover-icon-color: var(--tt-gray-dark-a-900);--tt-button-active-icon-color: var(--tt-brand-color-400);--tt-button-active-icon-color-emphasized: var(--tt-brand-color-300);--tt-button-active-icon-color-subdued: var(--tt-gray-dark-a-900);--tt-button-disabled-icon-color: var(--tt-gray-dark-a-400)}.tiptap-button[data-style=ghost]{--tt-button-default-icon-sub-color: var(--tt-gray-light-a-400);--tt-button-hover-icon-sub-color: var(--tt-gray-light-a-500);--tt-button-active-icon-sub-color: var(--tt-gray-light-a-400);--tt-button-active-icon-sub-color-emphasized: var(--tt-gray-light-a-500);--tt-button-active-icon-sub-color-subdued: var(--tt-gray-light-a-400);--tt-button-disabled-icon-sub-color: var(--tt-gray-light-a-100)}.dark .tiptap-button[data-style=ghost]{--tt-button-default-icon-sub-color: var(--tt-gray-dark-a-300);--tt-button-hover-icon-sub-color: var(--tt-gray-dark-a-400);--tt-button-active-icon-sub-color: var(--tt-gray-dark-a-300);--tt-button-active-icon-sub-color-emphasized: var(--tt-gray-dark-a-400);--tt-button-active-icon-sub-color-subdued: var(--tt-gray-dark-a-300);--tt-button-disabled-icon-sub-color: var(--tt-gray-dark-a-100)}.tiptap-button[data-style=ghost]{--tt-button-default-dropdown-arrows-color: var(--tt-gray-light-a-600);--tt-button-hover-dropdown-arrows-color: var(--tt-gray-light-a-700);--tt-button-active-dropdown-arrows-color: var(--tt-gray-light-a-600);--tt-button-active-dropdown-arrows-color-emphasized: var( --tt-gray-light-a-700 );--tt-button-active-dropdown-arrows-color-subdued: var( --tt-gray-light-a-600 );--tt-button-disabled-dropdown-arrows-color: var(--tt-gray-light-a-400)}.dark .tiptap-button[data-style=ghost]{--tt-button-default-dropdown-arrows-color: var(--tt-gray-dark-a-600);--tt-button-hover-dropdown-arrows-color: var(--tt-gray-dark-a-700);--tt-button-active-dropdown-arrows-color: var(--tt-gray-dark-a-600);--tt-button-active-dropdown-arrows-color-emphasized: var( --tt-gray-dark-a-700 );--tt-button-active-dropdown-arrows-color-subdued: var( --tt-gray-dark-a-600 );--tt-button-disabled-dropdown-arrows-color: var(--tt-gray-dark-a-400)}.tiptap-button[data-style=primary]{--tt-button-default-bg-color: var(--tt-brand-color-500);--tt-button-hover-bg-color: var(--tt-brand-color-600);--tt-button-active-bg-color: var(--tt-brand-color-100);--tt-button-active-bg-color-emphasized: var( --tt-brand-color-100 );--tt-button-active-bg-color-subdued: var( --tt-brand-color-100 );--tt-button-active-hover-bg-color: var(--tt-brand-color-200);--tt-button-active-hover-bg-color-emphasized: var( --tt-brand-color-200 );--tt-button-active-hover-bg-color-subdued: var( --tt-brand-color-200 );--tt-button-disabled-bg-color: var(--tt-gray-light-a-100)}.dark .tiptap-button[data-style=primary]{--tt-button-default-bg-color: var(--tt-brand-color-500);--tt-button-hover-bg-color: var(--tt-brand-color-600);--tt-button-active-bg-color: var(--tt-brand-color-900);--tt-button-active-bg-color-emphasized: var( --tt-brand-color-900 );--tt-button-active-bg-color-subdued: var( --tt-brand-color-900 );--tt-button-active-hover-bg-color: var(--tt-brand-color-800);--tt-button-active-hover-bg-color-emphasized: var( --tt-brand-color-800 );--tt-button-active-hover-bg-color-subdued: var( --tt-brand-color-800 );--tt-button-disabled-bg-color: var(--tt-gray-dark-a-100)}.tiptap-button[data-style=primary]{--tt-button-default-text-color: var(--white);--tt-button-hover-text-color: var(--white);--tt-button-active-text-color: var(--tt-gray-light-a-900);--tt-button-active-text-color-emphasized: var(--tt-gray-light-a-900);--tt-button-active-text-color-subdued: var(--tt-gray-light-a-900);--tt-button-disabled-text-color: var(--tt-gray-light-a-400)}.dark .tiptap-button[data-style=primary]{--tt-button-default-text-color: var(--white);--tt-button-hover-text-color: var(--white);--tt-button-active-text-color: var(--tt-gray-dark-a-900);--tt-button-active-text-color-emphasized: var(--tt-gray-dark-a-900);--tt-button-active-text-color-subdued: var(--tt-gray-dark-a-900);--tt-button-disabled-text-color: var(--tt-gray-dark-a-300)}.tiptap-button[data-style=primary]{--tt-button-default-icon-color: var(--white);--tt-button-hover-icon-color: var(--white);--tt-button-active-icon-color: var(--tt-brand-color-600);--tt-button-active-icon-color-emphasized: var(--tt-brand-color-600);--tt-button-active-icon-color-subdued: var(--tt-brand-color-600);--tt-button-disabled-icon-color: var(--tt-gray-light-a-400)}.dark .tiptap-button[data-style=primary]{--tt-button-default-icon-color: var(--white);--tt-button-hover-icon-color: var(--white);--tt-button-active-icon-color: var(--tt-brand-color-400);--tt-button-active-icon-color-emphasized: var(--tt-brand-color-400);--tt-button-active-icon-color-subdued: var(--tt-brand-color-400);--tt-button-disabled-icon-color: var(--tt-gray-dark-a-300)}.tiptap-button[data-style=primary]{--tt-button-default-icon-sub-color: var(--tt-gray-dark-a-500);--tt-button-hover-icon-sub-color: var(--tt-gray-dark-a-500);--tt-button-active-icon-sub-color: var(--tt-gray-light-a-500);--tt-button-active-icon-sub-color-emphasized: var(--tt-gray-light-a-500);--tt-button-active-icon-sub-color-subdued: var(--tt-gray-light-a-500);--tt-button-disabled-icon-sub-color: var(--tt-gray-light-a-100)}.dark .tiptap-button[data-style=primary]{--tt-button-default-icon-sub-color: var(--tt-gray-dark-a-400);--tt-button-hover-icon-sub-color: var(--tt-gray-dark-a-500);--tt-button-active-icon-sub-color: var(--tt-gray-dark-a-300);--tt-button-active-icon-sub-color-emphasized: var(--tt-gray-dark-a-400);--tt-button-active-icon-sub-color-subdued: var(--tt-gray-dark-a-300);--tt-button-disabled-icon-sub-color: var(--tt-gray-dark-a-100)}.tiptap-button[data-style=primary]{--tt-button-default-dropdown-arrows-color: var(--white);--tt-button-hover-dropdown-arrows-color: var(--white);--tt-button-active-dropdown-arrows-color: var(--tt-gray-light-a-700);--tt-button-active-dropdown-arrows-color-emphasized: var( --tt-gray-light-a-700 );--tt-button-active-dropdown-arrows-color-subdued: var( --tt-gray-light-a-700 );--tt-button-disabled-dropdown-arrows-color: var(--tt-gray-light-a-400)}.dark .tiptap-button[data-style=primary]{--tt-button-default-dropdown-arrows-color: var(--white);--tt-button-hover-dropdown-arrows-color: var(--white);--tt-button-active-dropdown-arrows-color: var(--tt-gray-dark-a-600);--tt-button-active-dropdown-arrows-color-emphasized: var( --tt-gray-dark-a-600 );--tt-button-active-dropdown-arrows-color-subdued: var( --tt-gray-dark-a-600 );--tt-button-disabled-dropdown-arrows-color: var(--tt-gray-dark-a-400)}.tiptap-button-group{position:relative;display:flex;vertical-align:middle}.tiptap-button-group[data-orientation=vertical]{flex-direction:column;align-items:flex-start;justify-content:center;min-width:max-content}.tiptap-button-group[data-orientation=vertical]>.tiptap-button{width:100%}.tiptap-button-group[data-orientation=horizontal]{gap:.125rem;flex-direction:row;align-items:center}.tiptap-button{font-size:.875rem;font-weight:500;font-feature-settings:"salt" on,"cv01" on;line-height:1.15;height:2rem;min-width:2rem;border:none;padding:.5rem;gap:.25rem;display:flex;align-items:center;justify-content:center;border-radius:var(--tt-radius-lg, .75rem);transition-property:background,color,opacity;transition-duration:var(--tt-transition-duration-default);transition-timing-function:var(--tt-transition-easing-default)}.tiptap-button:focus-visible{outline:none}.tiptap-button[data-highlighted=true],.tiptap-button[data-focus-visible=true]{background-color:var(--tt-button-hover-bg-color);color:var(--tt-button-hover-text-color)}.tiptap-button[data-weight=small]{width:1.5rem;min-width:1.5rem;padding-right:0;padding-left:0}.tiptap-button[data-size=large]{font-size:.9375rem;height:2.375rem;min-width:2.375rem;padding:.625rem}.tiptap-button[data-size=small]{font-size:.75rem;line-height:1.2;height:1.5rem;min-width:1.5rem;padding:.3125rem;border-radius:var(--tt-radius-md, .5rem)}.tiptap-button .tiptap-button-text{padding:0 .125rem;flex-grow:1;text-align:left;line-height:1.5rem}.tiptap-button[data-text-trim=on] .tiptap-button-text{text-overflow:ellipsis;overflow:hidden}.tiptap-button .tiptap-button-icon,.tiptap-button .tiptap-button-icon-sub,.tiptap-button .tiptap-button-dropdown-arrows,.tiptap-button .tiptap-button-dropdown-small{flex-shrink:0}.tiptap-button .tiptap-button-icon{width:1rem;height:1rem}.tiptap-button[data-size=large] .tiptap-button-icon{width:1.125rem;height:1.125rem}.tiptap-button[data-size=small] .tiptap-button-icon{width:.875rem;height:.875rem}.tiptap-button .tiptap-button-icon-sub{width:1rem;height:1rem}.tiptap-button[data-size=large] .tiptap-button-icon-sub{width:1.125rem;height:1.125rem}.tiptap-button[data-size=small] .tiptap-button-icon-sub{width:.875rem;height:.875rem}.tiptap-button .tiptap-button-dropdown-arrows{width:.75rem;height:.75rem}.tiptap-button[data-size=large] .tiptap-button-dropdown-arrows{width:.875rem;height:.875rem}.tiptap-button[data-size=small] .tiptap-button-dropdown-arrows,.tiptap-button .tiptap-button-dropdown-small{width:.625rem;height:.625rem}.tiptap-button[data-size=large] .tiptap-button-dropdown-small{width:.75rem;height:.75rem}.tiptap-button[data-size=small] .tiptap-button-dropdown-small{width:.5rem;height:.5rem}.tiptap-button:has(>svg):not(:has(>:not(svg))){gap:.125rem}.tiptap-button:has(>svg):not(:has(>:not(svg)))[data-size=large],.tiptap-button:has(>svg):not(:has(>:not(svg)))[data-size=small]{gap:.125rem}.tiptap-button:has(>svg:nth-of-type(2)):has(>.tiptap-button-dropdown-small):not(:has(>svg:nth-of-type(3))):not(:has(>.tiptap-button-text)){gap:0;padding-right:.25rem}.tiptap-button:has(>svg:nth-of-type(2)):has(>.tiptap-button-dropdown-small):not(:has(>svg:nth-of-type(3))):not(:has(>.tiptap-button-text))[data-size=large]{padding-right:.375rem}.tiptap-button:has(>svg:nth-of-type(2)):has(>.tiptap-button-dropdown-small):not(:has(>svg:nth-of-type(3))):not(:has(>.tiptap-button-text))[data-size=small]{padding-right:.25rem}.tiptap-button .tiptap-button-emoji{width:1rem;display:flex;justify-content:center}.tiptap-button[data-size=large] .tiptap-button-emoji{width:1.125rem}.tiptap-button[data-size=small] .tiptap-button-emoji{width:.875rem}.tiptap-button{background-color:var(--tt-button-default-bg-color);color:var(--tt-button-default-text-color)}.tiptap-button .tiptap-button-icon{color:var(--tt-button-default-icon-color)}.tiptap-button .tiptap-button-icon-sub{color:var(--tt-button-default-icon-sub-color)}.tiptap-button .tiptap-button-dropdown-arrows,.tiptap-button .tiptap-button-dropdown-small{color:var(--tt-button-default-dropdown-arrows-color)}.tiptap-button:hover:not([data-active-item=true]):not([disabled]),.tiptap-button[data-active-item=true]:not([disabled]),.tiptap-button[data-highlighted]:not([disabled]):not([data-highlighted=false]){background-color:var(--tt-button-hover-bg-color);color:var(--tt-button-hover-text-color)}.tiptap-button:hover:not([data-active-item=true]):not([disabled]) .tiptap-button-icon,.tiptap-button[data-active-item=true]:not([disabled]) .tiptap-button-icon,.tiptap-button[data-highlighted]:not([disabled]):not([data-highlighted=false]) .tiptap-button-icon{color:var(--tt-button-hover-icon-color)}.tiptap-button:hover:not([data-active-item=true]):not([disabled]) .tiptap-button-icon-sub,.tiptap-button[data-active-item=true]:not([disabled]) .tiptap-button-icon-sub,.tiptap-button[data-highlighted]:not([disabled]):not([data-highlighted=false]) .tiptap-button-icon-sub{color:var(--tt-button-hover-icon-sub-color)}.tiptap-button:hover:not([data-active-item=true]):not([disabled]) .tiptap-button-dropdown-arrows,.tiptap-button:hover:not([data-active-item=true]):not([disabled]) .tiptap-button-dropdown-small,.tiptap-button[data-active-item=true]:not([disabled]) .tiptap-button-dropdown-arrows,.tiptap-button[data-active-item=true]:not([disabled]) .tiptap-button-dropdown-small,.tiptap-button[data-highlighted]:not([disabled]):not([data-highlighted=false]) .tiptap-button-dropdown-arrows,.tiptap-button[data-highlighted]:not([disabled]):not([data-highlighted=false]) .tiptap-button-dropdown-small{color:var(--tt-button-hover-dropdown-arrows-color)}.tiptap-button[data-active-state=on]:not([disabled]),.tiptap-button[data-state=open]:not([disabled]){background-color:var(--tt-button-active-bg-color);color:var(--tt-button-active-text-color)}.tiptap-button[data-active-state=on]:not([disabled]) .tiptap-button-icon,.tiptap-button[data-state=open]:not([disabled]) .tiptap-button-icon{color:var(--tt-button-active-icon-color)}.tiptap-button[data-active-state=on]:not([disabled]) .tiptap-button-icon-sub,.tiptap-button[data-state=open]:not([disabled]) .tiptap-button-icon-sub{color:var(--tt-button-active-icon-sub-color)}.tiptap-button[data-active-state=on]:not([disabled]) .tiptap-button-dropdown-arrows,.tiptap-button[data-active-state=on]:not([disabled]) .tiptap-button-dropdown-small,.tiptap-button[data-state=open]:not([disabled]) .tiptap-button-dropdown-arrows,.tiptap-button[data-state=open]:not([disabled]) .tiptap-button-dropdown-small{color:var(--tt-button-active-dropdown-arrows-color)}.tiptap-button[data-active-state=on]:not([disabled]):hover,.tiptap-button[data-state=open]:not([disabled]):hover{background-color:var(--tt-button-active-hover-bg-color)}.tiptap-button[data-active-state=on]:not([disabled])[data-appearance=emphasized],.tiptap-button[data-state=open]:not([disabled])[data-appearance=emphasized]{background-color:var(--tt-button-active-bg-color-emphasized);color:var(--tt-button-active-text-color-emphasized)}.tiptap-button[data-active-state=on]:not([disabled])[data-appearance=emphasized] .tiptap-button-icon,.tiptap-button[data-state=open]:not([disabled])[data-appearance=emphasized] .tiptap-button-icon{color:var(--tt-button-active-icon-color-emphasized)}.tiptap-button[data-active-state=on]:not([disabled])[data-appearance=emphasized] .tiptap-button-icon-sub,.tiptap-button[data-state=open]:not([disabled])[data-appearance=emphasized] .tiptap-button-icon-sub{color:var(--tt-button-active-icon-sub-color-emphasized)}.tiptap-button[data-active-state=on]:not([disabled])[data-appearance=emphasized] .tiptap-button-dropdown-arrows,.tiptap-button[data-active-state=on]:not([disabled])[data-appearance=emphasized] .tiptap-button-dropdown-small,.tiptap-button[data-state=open]:not([disabled])[data-appearance=emphasized] .tiptap-button-dropdown-arrows,.tiptap-button[data-state=open]:not([disabled])[data-appearance=emphasized] .tiptap-button-dropdown-small{color:var(--tt-button-active-dropdown-arrows-color-emphasized)}.tiptap-button[data-active-state=on]:not([disabled])[data-appearance=emphasized]:hover,.tiptap-button[data-state=open]:not([disabled])[data-appearance=emphasized]:hover{background-color:var(--tt-button-active-hover-bg-color-emphasized)}.tiptap-button[data-active-state=on]:not([disabled])[data-appearance=subdued],.tiptap-button[data-state=open]:not([disabled])[data-appearance=subdued]{background-color:var(--tt-button-active-bg-color-subdued);color:var(--tt-button-active-text-color-subdued)}.tiptap-button[data-active-state=on]:not([disabled])[data-appearance=subdued] .tiptap-button-icon,.tiptap-button[data-state=open]:not([disabled])[data-appearance=subdued] .tiptap-button-icon{color:var(--tt-button-active-icon-color-subdued)}.tiptap-button[data-active-state=on]:not([disabled])[data-appearance=subdued] .tiptap-button-icon-sub,.tiptap-button[data-state=open]:not([disabled])[data-appearance=subdued] .tiptap-button-icon-sub{color:var(--tt-button-active-icon-sub-color-subdued)}.tiptap-button[data-active-state=on]:not([disabled])[data-appearance=subdued] .tiptap-button-dropdown-arrows,.tiptap-button[data-active-state=on]:not([disabled])[data-appearance=subdued] .tiptap-button-dropdown-small,.tiptap-button[data-state=open]:not([disabled])[data-appearance=subdued] .tiptap-button-dropdown-arrows,.tiptap-button[data-state=open]:not([disabled])[data-appearance=subdued] .tiptap-button-dropdown-small{color:var(--tt-button-active-dropdown-arrows-color-subdued)}.tiptap-button[data-active-state=on]:not([disabled])[data-appearance=subdued]:hover,.tiptap-button[data-state=open]:not([disabled])[data-appearance=subdued]:hover{background-color:var(--tt-button-active-hover-bg-color-subdued)}.tiptap-button[data-active-state=on]:not([disabled])[data-appearance=subdued]:hover .tiptap-button-icon,.tiptap-button[data-state=open]:not([disabled])[data-appearance=subdued]:hover .tiptap-button-icon{color:var(--tt-button-active-icon-color-subdued)}.tiptap-button:disabled{background-color:var(--tt-button-disabled-bg-color);color:var(--tt-button-disabled-text-color)}.tiptap-button:disabled .tiptap-button-icon{color:var(--tt-button-disabled-icon-color)}.tiptap-badge{--tt-badge-border-color: var(--tt-gray-light-a-200);--tt-badge-border-color-subdued: var(--tt-gray-light-a-200);--tt-badge-border-color-emphasized: var(--tt-gray-light-a-600);--tt-badge-text-color: var(--tt-gray-light-a-500);--tt-badge-text-color-subdued: var( --tt-gray-light-a-400 );--tt-badge-text-color-emphasized: var( --tt-gray-light-a-600 );--tt-badge-bg-color: var(--white);--tt-badge-bg-color-subdued: var(--white);--tt-badge-bg-color-emphasized: var(--white);--tt-badge-icon-color: var(--tt-gray-light-a-500);--tt-badge-icon-color-subdued: var( --tt-gray-light-a-400 );--tt-badge-icon-color-emphasized: var( --tt-brand-color-600 )}.dark .tiptap-badge{--tt-badge-border-color: var(--tt-gray-dark-a-200);--tt-badge-border-color-subdued: var(--tt-gray-dark-a-200);--tt-badge-border-color-emphasized: var(--tt-gray-dark-a-500);--tt-badge-text-color: var(--tt-gray-dark-a-500);--tt-badge-text-color-subdued: var( --tt-gray-dark-a-400 );--tt-badge-text-color-emphasized: var( --tt-gray-dark-a-600 );--tt-badge-bg-color: var(--black);--tt-badge-bg-color-subdued: var(--black);--tt-badge-bg-color-emphasized: var(--black);--tt-badge-icon-color: var(--tt-gray-dark-a-500);--tt-badge-icon-color-subdued: var( --tt-gray-dark-a-400 );--tt-badge-icon-color-emphasized: var( --tt-brand-color-400 )}.tiptap-badge[data-style=ghost]{--tt-badge-border-color: var(--tt-gray-light-a-200);--tt-badge-border-color-subdued: var(--tt-gray-light-a-200);--tt-badge-border-color-emphasized: var(--tt-gray-light-a-600);--tt-badge-text-color: var(--tt-gray-light-a-500);--tt-badge-text-color-subdued: var( --tt-gray-light-a-400 );--tt-badge-text-color-emphasized: var( --tt-gray-light-a-600 );--tt-badge-bg-color: var(--transparent);--tt-badge-bg-color-subdued: var(--transparent);--tt-badge-bg-color-emphasized: var(--transparent);--tt-badge-icon-color: var(--tt-gray-light-a-500);--tt-badge-icon-color-subdued: var( --tt-gray-light-a-400 );--tt-badge-icon-color-emphasized: var( --tt-brand-color-600 )}.dark .tiptap-badge[data-style=ghost]{--tt-badge-border-color: var(--tt-gray-dark-a-200);--tt-badge-border-color-subdued: var(--tt-gray-dark-a-200);--tt-badge-border-color-emphasized: var(--tt-gray-dark-a-500);--tt-badge-text-color: var(--tt-gray-dark-a-500);--tt-badge-text-color-subdued: var( --tt-gray-dark-a-400 );--tt-badge-text-color-emphasized: var( --tt-gray-dark-a-600 );--tt-badge-bg-color: var(--transparent);--tt-badge-bg-color-subdued: var(--transparent);--tt-badge-bg-color-emphasized: var(--transparent);--tt-badge-icon-color: var(--tt-gray-dark-a-500);--tt-badge-icon-color-subdued: var( --tt-gray-dark-a-400 );--tt-badge-icon-color-emphasized: var( --tt-brand-color-400 )}.tiptap-badge[data-style=gray]{--tt-badge-border-color: var(--tt-gray-light-a-200);--tt-badge-border-color-subdued: var(--tt-gray-light-a-200);--tt-badge-border-color-emphasized: var(--tt-gray-light-a-500);--tt-badge-text-color: var(--tt-gray-light-a-500);--tt-badge-text-color-subdued: var( --tt-gray-light-a-400 );--tt-badge-text-color-emphasized: var(--white);--tt-badge-bg-color: var(--tt-gray-light-a-100);--tt-badge-bg-color-subdued: var( --tt-gray-light-a-50 );--tt-badge-bg-color-emphasized: var( --tt-gray-light-a-700 );--tt-badge-icon-color: var(--tt-gray-light-a-500);--tt-badge-icon-color-subdued: var( --tt-gray-light-a-400 );--tt-badge-icon-color-emphasized: var(--white)}.dark .tiptap-badge[data-style=gray]{--tt-badge-border-color: var(--tt-gray-dark-a-200);--tt-badge-border-color-subdued: var(--tt-gray-dark-a-200);--tt-badge-border-color-emphasized: var(--tt-gray-dark-a-500);--tt-badge-text-color: var(--tt-gray-dark-a-500);--tt-badge-text-color-subdued: var( --tt-gray-dark-a-400 );--tt-badge-text-color-emphasized: var(--black);--tt-badge-bg-color: var(--tt-gray-dark-a-100);--tt-badge-bg-color-subdued: var( --tt-gray-dark-a-50 );--tt-badge-bg-color-emphasized: var( --tt-gray-dark-a-800 );--tt-badge-icon-color: var(--tt-gray-dark-a-500);--tt-badge-icon-color-subdued: var( --tt-gray-dark-a-400 );--tt-badge-icon-color-emphasized: var(--black)}.tiptap-badge[data-style=green]{--tt-badge-border-color: var(--tt-color-green-inc-2);--tt-badge-border-color-subdued: var(--tt-color-green-inc-3);--tt-badge-border-color-emphasized: var(--tt-color-green-dec-2);--tt-badge-text-color: var(--tt-color-green-dec-3);--tt-badge-text-color-subdued: var( --tt-color-green-dec-2 );--tt-badge-text-color-emphasized: var( --tt-color-green-inc-5 );--tt-badge-bg-color: var(--tt-color-green-inc-4);--tt-badge-bg-color-subdued: var( --tt-color-green-inc-5 );--tt-badge-bg-color-emphasized: var( --tt-color-green-dec-1 );--tt-badge-icon-color: var(--tt-color-green-dec-3);--tt-badge-icon-color-subdued: var( --tt-color-green-dec-2 );--tt-badge-icon-color-emphasized: var( --tt-color-green-inc-5 )}.dark .tiptap-badge[data-style=green]{--tt-badge-border-color: var(--tt-color-green-dec-2);--tt-badge-border-color-subdued: var(--tt-color-green-dec-3);--tt-badge-border-color-emphasized: var(--tt-color-green-base);--tt-badge-text-color: var(--tt-color-green-inc-3);--tt-badge-text-color-subdued: var( --tt-color-green-inc-2 );--tt-badge-text-color-emphasized: var( --tt-color-green-dec-5 );--tt-badge-bg-color: var(--tt-color-green-dec-4);--tt-badge-bg-color-subdued: var( --tt-color-green-dec-5 );--tt-badge-bg-color-emphasized: var( --tt-color-green-inc-1 );--tt-badge-icon-color: var(--tt-color-green-inc-3);--tt-badge-icon-color-subdued: var( --tt-color-green-inc-2 );--tt-badge-icon-color-emphasized: var( --tt-color-green-dec-5 )}.tiptap-badge[data-style=yellow]{--tt-badge-border-color: var(--tt-color-yellow-inc-2);--tt-badge-border-color-subdued: var(--tt-color-yellow-inc-3);--tt-badge-border-color-emphasized: var(--tt-color-yellow-dec-1);--tt-badge-text-color: var(--tt-color-yellow-dec-3);--tt-badge-text-color-subdued: var( --tt-color-yellow-dec-2 );--tt-badge-text-color-emphasized: var( --tt-color-yellow-dec-3 );--tt-badge-bg-color: var(--tt-color-yellow-inc-4);--tt-badge-bg-color-subdued: var( --tt-color-yellow-inc-5 );--tt-badge-bg-color-emphasized: var( --tt-color-yellow-base );--tt-badge-icon-color: var(--tt-color-yellow-dec-3);--tt-badge-icon-color-subdued: var( --tt-color-yellow-dec-2 );--tt-badge-icon-color-emphasized: var( --tt-color-yellow-dec-3 )}.dark .tiptap-badge[data-style=yellow]{--tt-badge-border-color: var(--tt-color-yellow-dec-2);--tt-badge-border-color-subdued: var(--tt-color-yellow-dec-3);--tt-badge-border-color-emphasized: var(--tt-color-yellow-inc-1);--tt-badge-text-color: var(--tt-color-yellow-inc-3);--tt-badge-text-color-subdued: var( --tt-color-yellow-inc-2 );--tt-badge-text-color-emphasized: var( --tt-color-yellow-dec-3 );--tt-badge-bg-color: var(--tt-color-yellow-dec-4);--tt-badge-bg-color-subdued: var( --tt-color-yellow-dec-5 );--tt-badge-bg-color-emphasized: var( --tt-color-yellow-base );--tt-badge-icon-color: var(--tt-color-yellow-inc-3);--tt-badge-icon-color-subdued: var( --tt-color-yellow-inc-2 );--tt-badge-icon-color-emphasized: var( --tt-color-yellow-dec-3 )}.tiptap-badge[data-style=red]{--tt-badge-border-color: var(--tt-color-red-inc-2);--tt-badge-border-color-subdued: var(--tt-color-red-inc-3);--tt-badge-border-color-emphasized: var(--tt-color-red-dec-2);--tt-badge-text-color: var(--tt-color-red-dec-3);--tt-badge-text-color-subdued: var( --tt-color-red-dec-2 );--tt-badge-text-color-emphasized: var( --tt-color-red-inc-5 );--tt-badge-bg-color: var(--tt-color-red-inc-4);--tt-badge-bg-color-subdued: var( --tt-color-red-inc-5 );--tt-badge-bg-color-emphasized: var( --tt-color-red-dec-1 );--tt-badge-icon-color: var(--tt-color-red-dec-3);--tt-badge-icon-color-subdued: var( --tt-color-red-dec-2 );--tt-badge-icon-color-emphasized: var( --tt-color-red-inc-5 )}.dark .tiptap-badge[data-style=red]{--tt-badge-border-color: var(--tt-color-red-dec-2);--tt-badge-border-color-subdued: var(--tt-color-red-dec-3);--tt-badge-border-color-emphasized: var(--tt-color-red-base);--tt-badge-text-color: var(--tt-color-red-inc-3);--tt-badge-text-color-subdued: var( --tt-color-red-inc-2 );--tt-badge-text-color-emphasized: var( --tt-color-red-dec-5 );--tt-badge-bg-color: var(--tt-color-red-dec-4);--tt-badge-bg-color-subdued: var( --tt-color-red-dec-5 );--tt-badge-bg-color-emphasized: var( --tt-color-red-inc-1 );--tt-badge-icon-color: var(--tt-color-red-inc-3);--tt-badge-icon-color-subdued: var( --tt-color-red-inc-2 );--tt-badge-icon-color-emphasized: var( --tt-color-red-dec-5 )}.tiptap-badge[data-style=brand]{--tt-badge-border-color: var(--tt-brand-color-300);--tt-badge-border-color-subdued: var(--tt-brand-color-200);--tt-badge-border-color-emphasized: var(--tt-brand-color-600);--tt-badge-text-color: var(--tt-brand-color-800);--tt-badge-text-color-subdued: var( --tt-brand-color-700 );--tt-badge-text-color-emphasized: var( --tt-brand-color-50 );--tt-badge-bg-color: var(--tt-brand-color-100);--tt-badge-bg-color-subdued: var( --tt-brand-color-50 );--tt-badge-bg-color-emphasized: var( --tt-brand-color-600 );--tt-badge-icon-color: var(--tt-brand-color-800);--tt-badge-icon-color-subdued: var( --tt-brand-color-700 );--tt-badge-icon-color-emphasized: var( --tt-brand-color-100 )}.dark .tiptap-badge[data-style=brand]{--tt-badge-border-color: var(--tt-brand-color-700);--tt-badge-border-color-subdued: var(--tt-brand-color-800);--tt-badge-border-color-emphasized: var(--tt-brand-color-400);--tt-badge-text-color: var(--tt-brand-color-200);--tt-badge-text-color-subdued: var( --tt-brand-color-300 );--tt-badge-text-color-emphasized: var( --tt-brand-color-950 );--tt-badge-bg-color: var(--tt-brand-color-900);--tt-badge-bg-color-subdued: var( --tt-brand-color-950 );--tt-badge-bg-color-emphasized: var( --tt-brand-color-400 );--tt-badge-icon-color: var(--tt-brand-color-200);--tt-badge-icon-color-subdued: var( --tt-brand-color-300 );--tt-badge-icon-color-emphasized: var( --tt-brand-color-900 )}.tiptap-badge-group{align-items:center;display:flex;flex-wrap:wrap;gap:.25rem}.tiptap-badge-group [data-orientation=vertical]{flex-direction:column}.tiptap-badge-group [data-orientation=horizontal]{flex-direction:row}.tiptap-badge{font-size:.625rem;font-weight:700;font-feature-settings:"salt" on,"cv01" on;line-height:1.15;height:1.25rem;min-width:1.25rem;padding:.25rem;display:flex;align-items:center;justify-content:center;border:solid 1px;border-radius:var(--tt-radius-sm, .375rem);transition-property:background,color,opacity;transition-duration:var(--tt-transition-duration-default);transition-timing-function:var(--tt-transition-easing-default)}.tiptap-badge[data-size=large]{font-size:.75rem;height:1.5rem;min-width:1.5rem;padding:.375rem;border-radius:var(--tt-radius-md, .375rem)}.tiptap-badge[data-size=small]{height:1rem;min-width:1rem;padding:.125rem;border-radius:var(--tt-radius-xs, .25rem)}.tiptap-badge .tiptap-badge-text{padding:0 .125rem;flex-grow:1;text-align:left}.tiptap-badge[data-text-trim=on] .tiptap-badge-text{text-overflow:ellipsis;overflow:hidden}.tiptap-badge .tiptap-badge-icon{pointer-events:none;flex-shrink:0;width:.625rem;height:.625rem}.tiptap-badge[data-size=large] .tiptap-badge-icon{width:.75rem;height:.75rem}.tiptap-badge{background-color:var(--tt-badge-bg-color);border-color:var(--tt-badge-border-color);color:var(--tt-badge-text-color)}.tiptap-badge .tiptap-badge-icon{color:var(--tt-badge-icon-color)}.tiptap-badge[data-appearance=emphasized]{background-color:var(--tt-badge-bg-color-emphasized);border-color:var(--tt-badge-border-color-emphasized);color:var(--tt-badge-text-color-emphasized)}.tiptap-badge[data-appearance=emphasized] .tiptap-badge-icon{color:var(--tt-badge-icon-color-emphasized)}.tiptap-badge[data-appearance=subdued]{background-color:var(--tt-badge-bg-color-subdued);border-color:var(--tt-badge-border-color-subdued);color:var(--tt-badge-text-color-subdued)}.tiptap-badge[data-appearance=subdued] .tiptap-badge-icon{color:var(--tt-badge-icon-color-subdued)}.tiptap-popover{--tt-popover-bg-color: var(--white);--tt-popover-border-color: var(--tt-gray-light-a-100);--tt-popover-text-color: var(--tt-gray-light-a-600)}.dark .tiptap-popover{--tt-popover-border-color: var(--tt-gray-dark-a-50);--tt-popover-bg-color: var(--tt-gray-dark-50);--tt-popover-text-color: var(--tt-gray-dark-a-600)}.tiptap-popover{z-index:50;outline:none;transform-origin:var(--radix-popover-content-transform-origin);max-height:var(--radix-popover-content-available-height)}.tiptap-popover>*{max-height:var(--radix-popover-content-available-height)}.tiptap-popover[data-state=open]{animation:fadeIn .15s cubic-bezier(.16,1,.3,1),zoomIn .15s cubic-bezier(.16,1,.3,1)}.tiptap-popover[data-state=closed]{animation:fadeOut .15s cubic-bezier(.16,1,.3,1),zoomOut .15s cubic-bezier(.16,1,.3,1)}.tiptap-popover[data-side=top],.tiptap-popover[data-side=top-start],.tiptap-popover[data-side=top-end]{animation:slideFromBottom .15s cubic-bezier(.16,1,.3,1)}.tiptap-popover[data-side=right],.tiptap-popover[data-side=right-start],.tiptap-popover[data-side=right-end]{animation:slideFromLeft .15s cubic-bezier(.16,1,.3,1)}.tiptap-popover[data-side=bottom],.tiptap-popover[data-side=bottom-start],.tiptap-popover[data-side=bottom-end]{animation:slideFromTop .15s cubic-bezier(.16,1,.3,1)}.tiptap-popover[data-side=left],.tiptap-popover[data-side=left-start],.tiptap-popover[data-side=left-end]{animation:slideFromRight .15s cubic-bezier(.16,1,.3,1)}.tiptap-separator{--tt-link-border-color: var(--tt-gray-light-a-200)}.dark .tiptap-separator{--tt-link-border-color: var(--tt-gray-dark-a-200)}.tiptap-separator{flex-shrink:0;background-color:var(--tt-link-border-color)}.tiptap-separator[data-orientation=horizontal]{height:1px;width:100%;margin:.5rem 0}.tiptap-separator[data-orientation=vertical]{height:1.5rem;width:1px}:root{--tiptap-card-bg-color: var(--white);--tiptap-card-border-color: var(--tt-gray-light-a-100);--tiptap-card-group-label-color: var(--tt-gray-light-a-800)}.dark{--tiptap-card-bg-color: var(--tt-gray-dark-50);--tiptap-card-border-color: var(--tt-gray-dark-a-100);--tiptap-card-group-label-color: var(--tt-gray-dark-a-800)}.tiptap-card{--padding: .375rem;--border-width: 1px;border-radius:calc(var(--padding) + var(--tt-radius-lg));box-shadow:var(--tt-shadow-elevated-md);background-color:var(--tiptap-card-bg-color);border:1px solid var(--tiptap-card-border-color);display:flex;flex-direction:column;outline:none;align-items:center;position:relative;min-width:0;word-wrap:break-word;background-clip:border-box}.tiptap-card-header{padding:.375rem;flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;width:100%;border-bottom:var(--border-width) solid var(--tiptap-card-border-color)}.tiptap-card-body{padding:.375rem;flex:1 1 auto;overflow-y:auto}.tiptap-card-item-group{position:relative;display:flex;vertical-align:middle;min-width:max-content}.tiptap-card-item-group[data-orientation=vertical]{flex-direction:column;justify-content:center}.tiptap-card-item-group[data-orientation=horizontal]{gap:.25rem;flex-direction:row;align-items:center}.tiptap-card-group-label{padding:.75rem .5rem .25rem;font-size:.75rem;font-weight:600;line-height:normal;text-transform:capitalize;color:var(--tiptap-card-group-label-color)}.tiptap-button-highlight{position:relative;width:1.25rem;height:1.25rem;margin:0 -.175rem;border-radius:var(--tt-radius-xl);background-color:var(--highlight-color);transition:transform .2s ease}.tiptap-button-highlight:after{content:"";position:absolute;width:100%;height:100%;left:0;top:0;border-radius:inherit;box-sizing:border-box;border:1px solid var(--highlight-color);filter:brightness(95%);mix-blend-mode:multiply}.dark .tiptap-button-highlight:after{filter:brightness(140%);mix-blend-mode:lighten}.tiptap-button[data-active-state=on] .tiptap-button-highlight:after{filter:brightness(80%)}.dark .tiptap-button[data-active-state=on] .tiptap-button-highlight:after{filter:brightness(180%)}.tiptap-button-text-color{position:relative;width:1.25rem;height:1.25rem;margin:0 -.175rem;border-radius:var(--tt-radius-xl);background-color:var(--highlight-color);transition:transform .2s ease}.tiptap-button-text-color:after{content:"";position:absolute;width:100%;height:100%;left:0;top:0;border-radius:inherit;box-sizing:border-box;border:1px solid var(--highlight-color);filter:brightness(95%);mix-blend-mode:multiply}.dark .tiptap-button-text-color:after{filter:brightness(140%);mix-blend-mode:lighten}.tiptap-button[data-active-state=on] .tiptap-button-text-color:after{filter:brightness(80%)}.dark .tiptap-button[data-active-state=on] .tiptap-button-text-color:after{filter:brightness(180%)}.font-family-select{height:32px;padding:4px 8px;border:1px solid #e2e8f0;border-radius:4px;background-color:#fff;font-size:14px;cursor:pointer;min-width:140px}.font-family-select:hover{border-color:#cbd5e1}.font-family-select:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 1px #3b82f6}.font-family-select option{padding:4px}
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@ var Xe = (n) => {
4
4
  };
5
5
  var on = (n, e, t) => e in n ? nn(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t;
6
6
  var C = (n, e, t) => on(n, typeof e != "symbol" ? e + "" : e, t), Ce = (n, e, t) => e.has(n) || Xe("Cannot " + t);
7
- var r = (n, e, t) => (Ce(n, e, "read from private field"), t ? t.call(n) : e.get(n)), m = (n, e, t) => e.has(n) ? Xe("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(n) : e.set(n, t), b = (n, e, t, i) => (Ce(n, e, "write to private field"), i ? i.call(n, t) : e.set(n, t), t), _ = (n, e, t) => (Ce(n, e, "access private method"), t);
7
+ var r = (n, e, t) => (Ce(n, e, "read from private field"), t ? t.call(n) : e.get(n)), f = (n, e, t) => e.has(n) ? Xe("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(n) : e.set(n, t), b = (n, e, t, i) => (Ce(n, e, "write to private field"), i ? i.call(n, t) : e.set(n, t), t), _ = (n, e, t) => (Ce(n, e, "access private method"), t);
8
8
  import { jsxs as k, jsx as c, Fragment as me } from "react/jsx-runtime";
9
9
  import { useState as R, useEffect as V, useRef as Me, useMemo as pt, forwardRef as $, createContext as sn, isValidElement as Ye, version as rn, cloneElement as an, useContext as ln, Fragment as hn, useCallback as K, memo as ot } from "react";
10
10
  import I from "konva";
@@ -31,14 +31,14 @@ import { useHotkeys as ai } from "react-hotkeys-hook";
31
31
  var E, w, j, Wt, Xt, Yt, Gt, Kt, qt, jt, Jt, Qt, li;
32
32
  class Zn {
33
33
  constructor(e, t) {
34
- m(this, Qt);
35
- m(this, E);
36
- m(this, w);
37
- m(this, j, { x: 0, y: 0, scale: 1 });
34
+ f(this, Qt);
35
+ f(this, E);
36
+ f(this, w);
37
+ f(this, j, { x: 0, y: 0, scale: 1 });
38
38
  /**
39
39
  * 处理滚轮缩放和平移
40
40
  */
41
- m(this, Wt, (e) => {
41
+ f(this, Wt, (e) => {
42
42
  e.evt.preventDefault();
43
43
  const i = r(this, w).getPointerPosition();
44
44
  if (i)
@@ -50,11 +50,11 @@ class Zn {
50
50
  let d = o;
51
51
  for (let g = 0; g < l; g++)
52
52
  d = h > 0 ? d * a : d / a;
53
- const f = Math.max(0.1, Math.min(5, d)), u = {
54
- x: i.x - s.x * f,
55
- y: i.y - s.y * f
53
+ const m = Math.max(0.1, Math.min(5, d)), u = {
54
+ x: i.x - s.x * m,
55
+ y: i.y - s.y * m
56
56
  };
57
- r(this, E)._updateViewport({ x: u.x, y: u.y, scale: f });
57
+ r(this, E)._updateViewport({ x: u.x, y: u.y, scale: m });
58
58
  } else {
59
59
  const o = e.evt.shiftKey ? e.evt.deltaY : e.evt.deltaX, s = e.evt.shiftKey ? 0 : e.evt.deltaY;
60
60
  r(this, E)._updateViewport({
@@ -63,7 +63,7 @@ class Zn {
63
63
  });
64
64
  }
65
65
  });
66
- m(this, Xt, (e) => {
66
+ f(this, Xt, (e) => {
67
67
  const t = r(this, E).getState().toolType;
68
68
  if (e.evt.button !== 0 || t === "hand")
69
69
  return;
@@ -97,7 +97,7 @@ class Zn {
97
97
  }
98
98
  r(this, E)._selectNodes();
99
99
  });
100
- m(this, Yt, () => {
100
+ f(this, Yt, () => {
101
101
  const e = r(this, E).getState().toolType;
102
102
  if (e === "hand")
103
103
  return;
@@ -108,7 +108,7 @@ class Zn {
108
108
  }
109
109
  ["rectangle", "rich-text", "image-marker"].includes(e) && r(this, E)._updateDraftNode();
110
110
  });
111
- m(this, Gt, () => {
111
+ f(this, Gt, () => {
112
112
  const e = r(this, E).getState().toolType;
113
113
  if (e !== "hand") {
114
114
  if (e === "select") {
@@ -118,25 +118,25 @@ class Zn {
118
118
  ["rectangle", "rich-text", "image-marker"].includes(e) && r(this, E)._finalizeDraftNode(), e === "text" && r(this, E)._createTextNodeAtDrawingPosition("");
119
119
  }
120
120
  });
121
- m(this, Kt, (e) => {
121
+ f(this, Kt, (e) => {
122
122
  if (e.target !== r(this, w))
123
123
  return;
124
124
  const t = r(this, E).getState().toolType;
125
125
  t === "hand" ? this.setCursor("grabbing") : t === "select" && this.setCursor("all-scroll");
126
126
  });
127
- m(this, qt, (e) => {
127
+ f(this, qt, (e) => {
128
128
  e.target === r(this, w) && r(this, E)._updateViewport({
129
129
  x: r(this, w).x(),
130
130
  y: r(this, w).y()
131
131
  });
132
132
  });
133
- m(this, jt, (e) => {
133
+ f(this, jt, (e) => {
134
134
  e.target === r(this, w) && (r(this, E)._updateViewport({
135
135
  x: r(this, w).x(),
136
136
  y: r(this, w).y()
137
137
  }), this.resetCursor());
138
138
  });
139
- m(this, Jt, (e) => {
139
+ f(this, Jt, (e) => {
140
140
  if (e.evt.preventDefault(), r(this, E).getToolType() !== "select")
141
141
  return;
142
142
  const t = r(this, w).getPointerPosition(), i = e.target;
@@ -221,43 +221,43 @@ li = function() {
221
221
  var kt, M, te, ee, ie, ne, oe, se, re, hi;
222
222
  class Un {
223
223
  constructor(e, t) {
224
- m(this, re);
225
- m(this, kt);
226
- m(this, M);
224
+ f(this, re);
225
+ f(this, kt);
226
+ f(this, M);
227
227
  /**
228
228
  * 处理 transformstart 事件
229
229
  */
230
- m(this, te, () => {
230
+ f(this, te, () => {
231
231
  this.emitPositionChange();
232
232
  });
233
233
  /**
234
234
  * 处理 transform 事件
235
235
  */
236
- m(this, ee, () => {
236
+ f(this, ee, () => {
237
237
  this.emitPositionChange();
238
238
  });
239
239
  /**
240
240
  * 处理 transformend 事件
241
241
  */
242
- m(this, ie, () => {
242
+ f(this, ie, () => {
243
243
  this.emitPositionChange();
244
244
  });
245
245
  /**
246
246
  * 处理 dragstart 事件
247
247
  */
248
- m(this, ne, () => {
248
+ f(this, ne, () => {
249
249
  this.emitPositionChange();
250
250
  });
251
251
  /**
252
252
  * 处理 dragmove 事件
253
253
  */
254
- m(this, oe, () => {
254
+ f(this, oe, () => {
255
255
  this.emitPositionChange();
256
256
  });
257
257
  /**
258
258
  * 处理 dragend 事件
259
259
  */
260
- m(this, se, () => {
260
+ f(this, se, () => {
261
261
  this.emitPositionChange();
262
262
  });
263
263
  b(this, kt, e), b(this, M, new I.Transformer({
@@ -358,10 +358,10 @@ class zn {
358
358
  // todo: 优化 selectedNodeIds 的存储和查询性能
359
359
  // private _selectedNodeIds: Set<string> = new Set();
360
360
  constructor(e) {
361
- m(this, A, []);
362
- m(this, D);
363
- m(this, Z, []);
364
- m(this, B);
361
+ f(this, A, []);
362
+ f(this, D);
363
+ f(this, Z, []);
364
+ f(this, B);
365
365
  b(this, D, e), b(this, B, cn());
366
366
  }
367
367
  /**
@@ -623,12 +623,12 @@ var Rt, ae, gi;
623
623
  class Kn extends yt {
624
624
  constructor(t, i, o = !1) {
625
625
  super();
626
- m(this, ae);
626
+ f(this, ae);
627
627
  C(this, "core");
628
628
  C(this, "config");
629
629
  C(this, "element");
630
630
  C(this, "isDraft");
631
- m(this, Rt, (t) => {
631
+ f(this, Rt, (t) => {
632
632
  const i = t === "select";
633
633
  this.element.listening(this.config.$_listening ?? i);
634
634
  });
@@ -690,16 +690,16 @@ var nt, xe, $t, Ft, ui, be;
690
690
  class qn extends yt {
691
691
  constructor(t, i, o = !1) {
692
692
  super();
693
- m(this, nt);
693
+ f(this, nt);
694
694
  C(this, "core");
695
695
  C(this, "config");
696
696
  C(this, "element");
697
697
  C(this, "isDraft");
698
- m(this, $t, (t) => {
698
+ f(this, $t, (t) => {
699
699
  const i = t === "select";
700
700
  this.element.listening(this.config.$_listening ?? i);
701
701
  });
702
- m(this, Ft, () => {
702
+ f(this, Ft, () => {
703
703
  const t = this.getElement().getLayer();
704
704
  if (!t) return;
705
705
  const i = t.find(
@@ -740,11 +740,11 @@ class qn extends yt {
740
740
  const i = this.config;
741
741
  this.config = Ke(
742
742
  {
743
- ...this.config,
743
+ ...i,
744
744
  ...t
745
745
  },
746
746
  this.core.getTheme()
747
- ), this.getElement().setAttrs(this.config), (t.$_imageUrl && t.$_imageUrl !== i.$_imageUrl || t.visible !== i.visible) && _(this, nt, xe).call(this);
747
+ ), delete this.config.image, this.getElement().setAttrs(this.config), t.$_imageUrl && t.$_imageUrl !== i.$_imageUrl && _(this, nt, xe).call(this);
748
748
  }
749
749
  /**
750
750
  * 销毁
@@ -797,20 +797,20 @@ be = function() {
797
797
  const t = this.getElement(), i = t.getLayer();
798
798
  if (!i) return;
799
799
  const o = t.x(), s = t.y(), a = t.width(), h = t.height(), l = i.find(
800
- (f) => f.hasName(this.config.id)
800
+ (m) => m.hasName(this.config.id)
801
801
  ), d = this.core.getState().nodes || [];
802
- l.forEach((f) => {
803
- const u = d.find((g) => g.id === f.id());
802
+ l.forEach((m) => {
803
+ const u = d.find((g) => g.id === m.id());
804
804
  if (u?.$_type === "image-marker" && u.$_relativeBox) {
805
805
  const { start: g, end: p } = u.$_relativeBox, x = o + g.ratioX * a, y = s + g.ratioY * h, N = o + p.ratioX * a, v = s + p.ratioY * h, L = Math.min(x, N), st = Math.min(y, v), X = Math.abs(N - x), Y = Math.abs(v - y);
806
- f.setAttrs({
806
+ m.setAttrs({
807
807
  x: L,
808
808
  y: st,
809
809
  width: X,
810
810
  height: Y
811
- }), f.getChildren().forEach((P) => {
811
+ }), m.getChildren().forEach((P) => {
812
812
  P.getClassName() === "Rect" ? P.setAttrs({ width: X, height: Y }) : P.getClassName() === "Group" && P.setAttrs({ x: X, y: Y });
813
- }), ei(f)?.syncConfigFromElement();
813
+ }), ei(m)?.syncConfigFromElement();
814
814
  }
815
815
  });
816
816
  };
@@ -818,17 +818,17 @@ var J, U, lt, et, xt, bt, Nt, mi, fi;
818
818
  class jn extends yt {
819
819
  constructor(t, i, o = !1) {
820
820
  super();
821
- m(this, Nt);
821
+ f(this, Nt);
822
822
  C(this, "core");
823
823
  C(this, "config");
824
824
  C(this, "element");
825
825
  C(this, "isDraft");
826
- m(this, J);
827
- m(this, U);
828
- m(this, lt);
829
- m(this, et);
830
- m(this, xt);
831
- m(this, bt);
826
+ f(this, J);
827
+ f(this, U);
828
+ f(this, lt);
829
+ f(this, et);
830
+ f(this, xt);
831
+ f(this, bt);
832
832
  this.core = t, this.config = je(i, this.core.getTheme()), this.isDraft = o, this.element = this.createElement(), Ct(this.element, this);
833
833
  const s = this.getElement();
834
834
  b(this, J, s.findOne(".rect")), b(this, U, s.findOne(".marker-group")), b(this, lt, r(this, U).findOne("Circle")), b(this, et, r(this, U).findOne("Text")), _(this, Nt, fi).call(this), b(this, xt, () => {
@@ -863,7 +863,7 @@ class jn extends yt {
863
863
  dash: h,
864
864
  cornerRadius: l,
865
865
  listening: !1
866
- }), f = new I.Group({
866
+ }), m = new I.Group({
867
867
  name: "marker-group",
868
868
  x: t,
869
869
  y: i,
@@ -884,7 +884,7 @@ class jn extends yt {
884
884
  fontSize: p,
885
885
  fill: "white"
886
886
  });
887
- return f.add(x), f.add(y), o.add(d), o.add(f), o;
887
+ return m.add(x), m.add(y), o.add(d), o.add(m), o;
888
888
  }
889
889
  /**
890
890
  * 获取 Konva.Group 实例
@@ -955,17 +955,17 @@ var rt, At, le, pi;
955
955
  class Jn extends yt {
956
956
  constructor(t, i, o = !1) {
957
957
  super();
958
- m(this, le);
958
+ f(this, le);
959
959
  C(this, "core");
960
960
  C(this, "config");
961
961
  C(this, "element");
962
962
  C(this, "isDraft");
963
963
  C(this, "htmlElement");
964
- m(this, rt, () => {
964
+ f(this, rt, () => {
965
965
  const t = this.element.getClientRect();
966
966
  this.htmlElement.style.left = `${t.x}px`, this.htmlElement.style.top = `${t.y}px`, this.htmlElement.style.width = `${t.width}px`, this.htmlElement.style.height = `${t.height}px`;
967
967
  });
968
- m(this, At, (t) => {
968
+ f(this, At, (t) => {
969
969
  const i = t === "select";
970
970
  this.element.listening(this.config.$_listening ?? i);
971
971
  });
@@ -1031,27 +1031,27 @@ var Ht, he, ce, yi;
1031
1031
  class Qn extends yt {
1032
1032
  constructor(t, i, o = !1) {
1033
1033
  super();
1034
- m(this, ce);
1034
+ f(this, ce);
1035
1035
  C(this, "core");
1036
1036
  C(this, "config");
1037
1037
  C(this, "element");
1038
1038
  C(this, "isDraft");
1039
1039
  C(this, "rect");
1040
- m(this, Ht, (t) => {
1040
+ f(this, Ht, (t) => {
1041
1041
  const i = t === "select";
1042
1042
  this.element.listening(this.config.$_listening ?? i);
1043
1043
  });
1044
1044
  /**
1045
1045
  * 编辑文字
1046
1046
  */
1047
- m(this, he, () => {
1047
+ f(this, he, () => {
1048
1048
  const t = this.element, i = this.core.getCanvasTransformer(), o = t.getClientRect(), s = document.createElement("textarea");
1049
1049
  this.core.getStage().getContent().appendChild(s), s.name = "text-editor", s.draggable = !1, s.value = t.text(), s.style.position = "absolute", s.style.top = o.y + "px", s.style.left = o.x + "px", s.style.minWidth = "2px", s.style.fieldSizing = "content", s.style.whiteSpace = "nowrap", s.style.height = t.height() + "px", s.style.fontSize = t.fontSize() + "px", s.style.border = "none", s.style.padding = "0px", s.style.margin = "0px", s.style.overflow = "hidden", s.style.background = "none", s.style.outline = "none", s.style.resize = "none", s.style.lineHeight = t.lineHeight().toString(), s.style.fontFamily = t.fontFamily(), s.style.transformOrigin = "left top", s.style.textAlign = t.align(), s.style.color = t.fill().toString();
1050
1050
  const a = t.rotation();
1051
1051
  let h = "";
1052
1052
  a && (h += "rotateZ(" + a + "deg)"), s.style.transform = h + `scale(${t.getAbsoluteScale().x})`, s.focus();
1053
1053
  const l = () => {
1054
- this.core.off("viewport:change", f), s.parentNode?.removeChild(s), window.removeEventListener("click", d), window.removeEventListener("touchstart", d), t.show(), i.getTransformer().show(), i.getTransformer().forceUpdate();
1054
+ this.core.off("viewport:change", m), s.parentNode?.removeChild(s), window.removeEventListener("click", d), window.removeEventListener("touchstart", d), t.show(), i.getTransformer().show(), i.getTransformer().forceUpdate();
1055
1055
  };
1056
1056
  s.addEventListener("keydown", function(u) {
1057
1057
  if (u.key === "Escape") {
@@ -1063,7 +1063,7 @@ class Qn extends yt {
1063
1063
  });
1064
1064
  const d = (u) => {
1065
1065
  u.target !== s && (t.text(s.value), l());
1066
- }, f = () => {
1066
+ }, m = () => {
1067
1067
  const u = t.getClientRect();
1068
1068
  s.style.top = u.y + "px", s.style.left = u.x + "px";
1069
1069
  const g = t.rotation();
@@ -1071,7 +1071,7 @@ class Qn extends yt {
1071
1071
  g && (p += "rotateZ(" + g + "deg)"), s.style.transform = p + `scale(${t.getAbsoluteScale().x})`;
1072
1072
  };
1073
1073
  setTimeout(() => {
1074
- this.core.on("viewport:change", f), window.addEventListener("click", d), window.addEventListener("touchstart", d);
1074
+ this.core.on("viewport:change", m), window.addEventListener("click", d), window.addEventListener("touchstart", d);
1075
1075
  });
1076
1076
  });
1077
1077
  this.core = t, this.config = Qe(i, this.core.getTheme()), this.element = this.createElement(), this.rect = new I.Rect(this.config), Ct(this.element, this), this.isDraft = o, _(this, ce, yi).call(this), setTimeout(() => {
@@ -1134,7 +1134,7 @@ var wt, ht, de, Lt, Dt, Bt, Vt, ge, vi;
1134
1134
  class to extends yt {
1135
1135
  constructor(t, i, o = !1) {
1136
1136
  super();
1137
- m(this, ge);
1137
+ f(this, ge);
1138
1138
  C(this, "core");
1139
1139
  C(this, "config");
1140
1140
  C(this, "element");
@@ -1163,7 +1163,7 @@ class to extends yt {
1163
1163
  window.addEventListener("click", r(this, Vt));
1164
1164
  }), window.addEventListener("keydown", r(this, Bt));
1165
1165
  });
1166
- m(this, wt, async () => {
1166
+ f(this, wt, async () => {
1167
1167
  const t = this.htmlEditorElement.getBoundingClientRect();
1168
1168
  if (t.width === 0 || t.height === 0)
1169
1169
  return;
@@ -1190,13 +1190,15 @@ class to extends yt {
1190
1190
  C(this, "detachEditor", () => {
1191
1191
  this.editor && (this.htmlElement.id = "", this.htmlEditorElement.innerHTML = this.editor.getHTML(), this.config.$_htmlContent = this.editor.getHTML(), this.editor.commands.blur(), this.htmlElement.style.pointerEvents = "none", this.element.listening(!0), this.core.isEditingText = !1, this.core._unregisterTextEditor(), window.removeEventListener("keydown", r(this, Bt)), window.removeEventListener("click", r(this, Vt)), this.editor.destroy(), this.editor = void 0, r(this, wt).call(this).then(() => {
1192
1192
  this.htmlElement.style.transition = "opacity 0.1s", this.htmlElement.style.opacity = "0", this.element.opacity(1);
1193
+ }).finally(() => {
1194
+ this.syncConfigFromElement(), this.core._rebuildStateAfterNodeChange(this, !1);
1193
1195
  }));
1194
1196
  });
1195
- m(this, ht, () => {
1197
+ f(this, ht, () => {
1196
1198
  const t = this.element.getClientRect();
1197
1199
  this.htmlElement.style.left = `${t.x}px`, this.htmlElement.style.top = `${t.y}px`, this.config.lockX ? this.htmlEditorElement.style.width = `${this.element.width() / this.config.htmlScale * this.config.scaleWhenCreate}px` : this.htmlEditorElement.style.width = "max-content", this.htmlEditorElement.style.transform = `scale(${this.config.htmlScale})`;
1198
1200
  });
1199
- m(this, de, () => {
1201
+ f(this, de, () => {
1200
1202
  this.resizeObserver = new ResizeObserver((t) => {
1201
1203
  for (const i of t) {
1202
1204
  let o = !1;
@@ -1207,22 +1209,22 @@ class to extends yt {
1207
1209
  }
1208
1210
  }), this.resizeObserver.observe(this.htmlEditorElement);
1209
1211
  });
1210
- m(this, Lt, (t) => {
1212
+ f(this, Lt, (t) => {
1211
1213
  const i = t === "select";
1212
1214
  this.element.listening(this.config.$_listening ?? i);
1213
1215
  });
1214
- m(this, Dt, (t) => {
1216
+ f(this, Dt, (t) => {
1215
1217
  const i = this.element.getClientRect();
1216
1218
  this.htmlElement.style.left = `${i.x}px`, this.htmlElement.style.top = `${i.y}px`, this.htmlElement.style.transform = `scale(${this.core.getState().viewport.scale / this.config.scaleWhenCreate})`;
1217
1219
  });
1218
- m(this, Bt, (t) => {
1220
+ f(this, Bt, (t) => {
1219
1221
  t.key === "Escape" && this.detachEditor();
1220
1222
  });
1221
- m(this, Vt, (t) => {
1223
+ f(this, Vt, (t) => {
1222
1224
  const i = t.target;
1223
1225
  this.htmlElement.contains(i) || this.detachEditor();
1224
1226
  });
1225
- this.core = t, this.config = ti(i, this.core.getTheme()), this.config.scaleWhenCreate = this.config.scaleWhenCreate || this.core.getState().viewport.scale || 1, this.config.htmlScale = this.config.htmlScale || 1, this.element = this.createElement(), Ct(this.element, this), this.isDraft = o, this.htmlElement = document.createElement("div"), this.htmlElement.style.position = "absolute", this.htmlElement.style.pointerEvents = "none", this.htmlElement.style.overflowWrap = "break-word", this.htmlElement.style.transformOrigin = "top left", this.htmlElement.style.opacity = "0", this.htmlElement.style.transition = "opacity 0.1s", this.htmlEditorElement = document.createElement("div"), this.htmlEditorElement.style.transformOrigin = "top left", this.htmlEditorElement.innerHTML = this.config.$_htmlContent || "", this.htmlElement.appendChild(this.htmlEditorElement), this.core.getStage().content.appendChild(this.htmlElement), r(this, de).call(this), _(this, ge, vi).call(this), setTimeout(() => {
1227
+ this.core = t, this.config = ti(i, this.core.getTheme()), this.config.scaleWhenCreate = this.config.scaleWhenCreate || this.core.getState().viewport.scale || 1, this.config.htmlScale = this.config.htmlScale || 1, this.element = this.createElement(), Ct(this.element, this), this.isDraft = o, this.htmlElement = document.createElement("div"), this.htmlElement.style.position = "absolute", this.htmlElement.style.pointerEvents = "none", this.htmlElement.style.overflowWrap = "break-word", this.htmlElement.style.transformOrigin = "top left", this.htmlElement.style.opacity = "0", this.htmlElement.style.transition = "opacity 0.1s", this.htmlEditorElement = document.createElement("div"), this.htmlEditorElement.style.transformOrigin = "top left", this.htmlEditorElement.style.width = "max-content", this.htmlEditorElement.innerHTML = this.config.$_htmlContent || "", this.htmlElement.appendChild(this.htmlEditorElement), this.core.getStage().content.appendChild(this.htmlElement), r(this, de).call(this), _(this, ge, vi).call(this), setTimeout(() => {
1226
1228
  r(this, ht).call(this), this.htmlElement.style.transform = `scale(${this.core.getState().viewport.scale / this.config.scaleWhenCreate})`, r(this, wt).call(this);
1227
1229
  });
1228
1230
  }
@@ -1255,7 +1257,7 @@ class to extends yt {
1255
1257
  ...t
1256
1258
  },
1257
1259
  this.core.getTheme()
1258
- ), this.getElement().setAttrs(this.config), r(this, ht).call(this);
1260
+ ), console.log(this.config), delete this.config.image, this.getElement().setAttrs(this.config), r(this, ht).call(this);
1259
1261
  }
1260
1262
  /**
1261
1263
  * 销毁
@@ -1270,7 +1272,7 @@ wt = new WeakMap(), ht = new WeakMap(), de = new WeakMap(), Lt = new WeakMap(),
1270
1272
  vi = function() {
1271
1273
  const t = this.getElement();
1272
1274
  this.core.on("toolType:change", r(this, Lt)), this.core.on("viewport:change", r(this, Dt)), t.on("transformstart", () => {
1273
- this.htmlElement.style.transition = "opacity 0.2s", this.htmlElement.style.opacity = "1", this.element.opacity(0);
1275
+ this.htmlElement.style.opacity = "1", this.element.opacity(0);
1274
1276
  }), t.on("transform", (i) => {
1275
1277
  const o = this.core.getTransformer().getActiveAnchor();
1276
1278
  if (o === "middle-left" || o === "middle-right") {
@@ -1279,7 +1281,8 @@ vi = function() {
1279
1281
  }
1280
1282
  t.width(t.width() * t.scaleX()), t.height(t.height() * t.scaleY()), this.config.htmlScale = this.config.htmlScale * t.scaleX(), t.setAttr("htmlScale", this.config.htmlScale), t.scale({ x: 1, y: 1 }), r(this, ht).call(this);
1281
1283
  }), t.on("transformend", (i) => {
1282
- this.syncConfigFromElement(), this.core._rebuildStateAfterNodeChange(this, !0), r(this, wt).call(this).then(() => {
1284
+ r(this, wt).call(this).finally(() => {
1285
+ this.syncConfigFromElement(), this.core._rebuildStateAfterNodeChange(this, !0);
1283
1286
  });
1284
1287
  }), t.on("dragmove", () => {
1285
1288
  r(this, ht).call(this);
@@ -1293,7 +1296,7 @@ var ft, we, Ot, Pt, Ci;
1293
1296
  class eo extends yt {
1294
1297
  constructor(t, i, o = !1) {
1295
1298
  super();
1296
- m(this, ft);
1299
+ f(this, ft);
1297
1300
  C(this, "core");
1298
1301
  C(this, "config");
1299
1302
  C(this, "element");
@@ -1301,11 +1304,11 @@ class eo extends yt {
1301
1304
  C(this, "imgCover");
1302
1305
  C(this, "playIcon");
1303
1306
  C(this, "isDraft");
1304
- m(this, Ot, (t) => {
1307
+ f(this, Ot, (t) => {
1305
1308
  const i = t === "select";
1306
1309
  this.element.listening(this.config.$_listening ?? i);
1307
1310
  });
1308
- m(this, Pt, () => {
1311
+ f(this, Pt, () => {
1309
1312
  this.getElement().getLayer() && this.core._rebuildStateAfterNodeChange([this], !0);
1310
1313
  });
1311
1314
  this.core = t, this.config = qe(i, this.core.getTheme());
@@ -1523,20 +1526,20 @@ class so extends zn {
1523
1526
  }
1524
1527
  };
1525
1528
  super(s);
1526
- m(this, O);
1527
- m(this, Et);
1528
- m(this, H);
1529
- m(this, G);
1530
- m(this, Q);
1531
- m(this, F, null);
1532
- m(this, St);
1533
- m(this, z, null);
1534
- m(this, W, null);
1529
+ f(this, O);
1530
+ f(this, Et);
1531
+ f(this, H);
1532
+ f(this, G);
1533
+ f(this, Q);
1534
+ f(this, F, null);
1535
+ f(this, St);
1536
+ f(this, z, null);
1537
+ f(this, W, null);
1535
1538
  /** 节点映射,方便快速查找 */
1536
- m(this, it, /* @__PURE__ */ new Map());
1537
- m(this, ct, null);
1539
+ f(this, it, /* @__PURE__ */ new Map());
1540
+ f(this, ct, null);
1538
1541
  C(this, "isEditingText", !1);
1539
- m(this, ue, (t) => {
1542
+ f(this, ue, (t) => {
1540
1543
  (t.key === "Delete" || t.key === "Backspace") && (t.stopPropagation(), this.deleteSelectedNodes());
1541
1544
  });
1542
1545
  b(this, Et, i?.theme ?? ci), b(this, St, t), b(this, H, new Zn(this, {
@@ -1676,7 +1679,7 @@ class so extends zn {
1676
1679
  a.forEach((v) => {
1677
1680
  v.$_type === "image-marker" && typeof v.$_markerNumber == "number" && (h = Math.max(h, v.$_markerNumber));
1678
1681
  });
1679
- const l = (i.x - s.x) / s.width, d = (i.y - s.y) / s.height, f = (o.x - s.x) / s.width, u = (o.y - s.y) / s.height, g = Math.min(i.x, o.x), p = Math.min(i.y, o.y), x = Math.abs(o.x - i.x), y = Math.abs(o.y - i.y), N = {
1682
+ const l = (i.x - s.x) / s.width, d = (i.y - s.y) / s.height, m = (o.x - s.x) / s.width, u = (o.y - s.y) / s.height, g = Math.min(i.x, o.x), p = Math.min(i.y, o.y), x = Math.abs(o.x - i.x), y = Math.abs(o.y - i.y), N = {
1680
1683
  id: _t(),
1681
1684
  $_type: "image-marker",
1682
1685
  x: g,
@@ -1693,7 +1696,7 @@ class so extends zn {
1693
1696
  ratioY: Math.max(0, Math.min(1, d))
1694
1697
  },
1695
1698
  end: {
1696
- ratioX: Math.max(0, Math.min(1, f)),
1699
+ ratioX: Math.max(0, Math.min(1, m)),
1697
1700
  ratioY: Math.max(0, Math.min(1, u))
1698
1701
  }
1699
1702
  }
@@ -1709,8 +1712,8 @@ class so extends zn {
1709
1712
  (h) => !h.name().includes("imageMarker")
1710
1713
  ).slice().sort((h, l) => l.zIndex() - h.zIndex());
1711
1714
  for (const h of a) {
1712
- const l = h.x(), d = h.y(), f = h.width(), u = h.height();
1713
- if (t.x >= l && t.x <= l + f && t.y >= d && t.y <= d + u)
1715
+ const l = h.x(), d = h.y(), m = h.width(), u = h.height();
1716
+ if (t.x >= l && t.x <= l + m && t.y >= d && t.y <= d + u)
1714
1717
  return h.getClassName() === "Image" ? h : null;
1715
1718
  }
1716
1719
  return null;
@@ -1769,12 +1772,12 @@ class so extends zn {
1769
1772
  l.forEach((y) => {
1770
1773
  y.$_type === "image-marker" && typeof y.$_markerNumber == "number" && (d = Math.max(d, y.$_markerNumber));
1771
1774
  });
1772
- const f = (a.x - s.x) / s.width, u = (a.y - s.y) / s.height, g = (h.x - s.x) / s.width, p = (h.y - s.y) / s.height, x = {
1775
+ const m = (a.x - s.x) / s.width, u = (a.y - s.y) / s.height, g = (h.x - s.x) / s.width, p = (h.y - s.y) / s.height, x = {
1773
1776
  ...i,
1774
1777
  $_markerNumber: d + 1,
1775
1778
  $_relativeBox: {
1776
1779
  start: {
1777
- ratioX: Math.max(0, Math.min(1, f)),
1780
+ ratioX: Math.max(0, Math.min(1, m)),
1778
1781
  ratioY: Math.max(0, Math.min(1, u))
1779
1782
  },
1780
1783
  end: {
@@ -1966,9 +1969,9 @@ bi = function() {
1966
1969
  wi = function() {
1967
1970
  b(this, ct, new ResizeObserver((t) => {
1968
1971
  for (const i of t) {
1969
- const { width: o, height: s } = i.contentRect, a = this.getStage(), h = this.getState().viewport, l = a.width(), d = a.height(), f = h.x + l / 2, u = h.y + d / 2;
1972
+ const { width: o, height: s } = i.contentRect, a = this.getStage(), h = this.getState().viewport, l = a.width(), d = a.height(), m = h.x + l / 2, u = h.y + d / 2;
1970
1973
  a.width(o), a.height(s);
1971
- const g = f - o / 2, p = u - s / 2;
1974
+ const g = m - o / 2, p = u - s / 2;
1972
1975
  this._updateViewport(
1973
1976
  {
1974
1977
  x: g,
@@ -1982,10 +1985,23 @@ wi = function() {
1982
1985
  * 根据canvas节点映射重建 state.nodes
1983
1986
  */
1984
1987
  Ee = function(t) {
1985
- const i = {
1986
- nodes: Array.from(r(this, it).values()).map((o) => o.getConfig())
1988
+ const i = this.getState().nodes || [], o = /* @__PURE__ */ new Map();
1989
+ i.forEach((d, m) => {
1990
+ o.set(d.id, m);
1991
+ });
1992
+ const s = Array.from(r(this, it).values()).map(
1993
+ (d) => d.getConfig()
1994
+ ), a = [], h = [];
1995
+ s.forEach((d) => {
1996
+ o.has(d.id) ? a.push(d) : h.push(d);
1997
+ }), a.sort((d, m) => {
1998
+ const u = o.get(d.id) ?? 0, g = o.get(m.id) ?? 0;
1999
+ return u - g;
2000
+ });
2001
+ const l = {
2002
+ nodes: [...a, ...h]
1987
2003
  };
1988
- this._updateState(i, t);
2004
+ this._updateState(l, t);
1989
2005
  }, /**
1990
2006
  * 更新 state.nodes
1991
2007
  */
@@ -2121,7 +2137,7 @@ class ro extends so {
2121
2137
  a.add(p);
2122
2138
  }
2123
2139
  });
2124
- const d = a.getClientRect(), f = a.toDataURL({
2140
+ const d = a.getClientRect(), m = a.toDataURL({
2125
2141
  x: d.x,
2126
2142
  y: d.y,
2127
2143
  width: d.width,
@@ -2130,7 +2146,7 @@ class ro extends so {
2130
2146
  mimeType: t?.mimeType ?? "image/png",
2131
2147
  quality: t?.quality ?? 1
2132
2148
  });
2133
- return a.destroy(), f;
2149
+ return a.destroy(), m;
2134
2150
  }
2135
2151
  /**
2136
2152
  * 删除当前选中的节点
@@ -2229,8 +2245,8 @@ class ro extends so {
2229
2245
  if ((this.getState().nodes || []).length === 0) return;
2230
2246
  const i = e?.padding ?? 50, o = e?.scale === !0, s = e?.nodeIds;
2231
2247
  let a = 1 / 0, h = 1 / 0, l = -1 / 0, d = -1 / 0;
2232
- const f = this.getMainLayer(), u = this.getState().selectedNodeIds || [], g = s && s.length > 0, p = !g && u.length > 0, x = g ? s : p ? u : null;
2233
- if (f.children.forEach((P) => {
2248
+ const m = this.getMainLayer(), u = this.getState().selectedNodeIds || [], g = s && s.length > 0, p = !g && u.length > 0, x = g ? s : p ? u : null;
2249
+ if (m.children.forEach((P) => {
2234
2250
  if (P.visible() && P.getClassName() !== "Transformer" && P.hasName(T.selectable)) {
2235
2251
  if (x) {
2236
2252
  const at = P.id();
@@ -2347,12 +2363,12 @@ function lo({
2347
2363
  xmlns: "http://www.w3.org/2000/svg",
2348
2364
  "aria-hidden": "true",
2349
2365
  children: [
2350
- /* @__PURE__ */ c("defs", { children: oi.map(({ min: l, mid: d, step: f }, u) => {
2351
- const g = f * i * h, p = 0.5 + s * h, x = 0.5 + a * h, y = p > 0 ? p % g : g + p % g, N = x > 0 ? x % g : g + x % g, v = h < d ? ao(h, [l, d], [0, 1]) : 1;
2366
+ /* @__PURE__ */ c("defs", { children: oi.map(({ min: l, mid: d, step: m }, u) => {
2367
+ const g = m * i * h, p = 0.5 + s * h, x = 0.5 + a * h, y = p > 0 ? p % g : g + p % g, N = x > 0 ? x % g : g + x % g, v = h < d ? ao(h, [l, d], [0, 1]) : 1;
2352
2368
  return /* @__PURE__ */ c(
2353
2369
  "pattern",
2354
2370
  {
2355
- id: `grid_${f}`,
2371
+ id: `grid_${m}`,
2356
2372
  width: g,
2357
2373
  height: g,
2358
2374
  patternUnits: "userSpaceOnUse",
@@ -2431,7 +2447,7 @@ function go({ api: n }) {
2431
2447
  });
2432
2448
  }, [t, n]);
2433
2449
  const i = (l) => {
2434
- const d = n.getStage().width() / 2, f = n.getStage().height() / 2, u = (d - e.x) / e.scale, g = (f - e.y) / e.scale, p = d - u * l, x = f - g * l;
2450
+ const d = n.getStage().width() / 2, m = n.getStage().height() / 2, u = (d - e.x) / e.scale, g = (m - e.y) / e.scale, p = d - u * l, x = m - g * l;
2435
2451
  n.updateViewport({ x: p, y: x, scale: l });
2436
2452
  }, o = () => {
2437
2453
  const l = Math.min(e.scale * 1.2, 5);
@@ -2718,7 +2734,7 @@ function yo({
2718
2734
  delay: o = 600,
2719
2735
  closeDelay: s = 0
2720
2736
  } = {}) {
2721
- const [a, h] = R(n), l = t ?? a, d = i ?? h, f = $n({
2737
+ const [a, h] = R(n), l = t ?? a, d = i ?? h, m = $n({
2722
2738
  placement: e,
2723
2739
  open: l,
2724
2740
  onOpenChange: d,
@@ -2732,7 +2748,7 @@ function yo({
2732
2748
  }),
2733
2749
  Hn({ padding: 4 })
2734
2750
  ]
2735
- }), u = f.context, g = Dn(u, {
2751
+ }), u = m.context, g = Dn(u, {
2736
2752
  mouseOnly: !0,
2737
2753
  move: !1,
2738
2754
  restMs: o,
@@ -2748,9 +2764,9 @@ function yo({
2748
2764
  open: l,
2749
2765
  setOpen: d,
2750
2766
  ...N,
2751
- ...f
2767
+ ...m
2752
2768
  }),
2753
- [l, d, N, f]
2769
+ [l, d, N, m]
2754
2770
  );
2755
2771
  }
2756
2772
  const Ne = sn(null);
@@ -2931,7 +2947,7 @@ const Tt = $(
2931
2947
  children: h,
2932
2948
  ...l
2933
2949
  }, d) => {
2934
- const { editor: f } = dt(n), {
2950
+ const { editor: m } = dt(n), {
2935
2951
  isVisible: u,
2936
2952
  handleMark: g,
2937
2953
  label: p,
@@ -2940,7 +2956,7 @@ const Tt = $(
2940
2956
  Icon: N,
2941
2957
  shortcutKeys: v
2942
2958
  } = No({
2943
- editor: f,
2959
+ editor: m,
2944
2960
  type: e,
2945
2961
  hideWhenUnavailable: i,
2946
2962
  onToggled: o
@@ -3238,7 +3254,7 @@ function No(n) {
3238
3254
  s.off("selectionUpdate", u);
3239
3255
  };
3240
3256
  }, [s, t, i]);
3241
- const f = K(() => {
3257
+ const m = K(() => {
3242
3258
  if (!s) return !1;
3243
3259
  const u = wo(s, t);
3244
3260
  return u && o?.(), u;
@@ -3246,7 +3262,7 @@ function No(n) {
3246
3262
  return {
3247
3263
  isVisible: a,
3248
3264
  isActive: d,
3249
- handleMark: f,
3265
+ handleMark: m,
3250
3266
  canToggle: l,
3251
3267
  label: So(t),
3252
3268
  shortcutKeys: Li[t],
@@ -3267,7 +3283,7 @@ function Di({
3267
3283
  h ? 0 : -1
3268
3284
  );
3269
3285
  return V(() => {
3270
- const f = (g) => {
3286
+ const m = (g) => {
3271
3287
  if (!i.length) return !1;
3272
3288
  const p = () => d((y) => y === -1 ? 0 : (y + 1) % i.length), x = () => d((y) => y === -1 ? i.length - 1 : (y - 1 + i.length) % i.length);
3273
3289
  switch (g.key) {
@@ -3295,10 +3311,10 @@ function Di({
3295
3311
  };
3296
3312
  let u = null;
3297
3313
  if (n ? u = n.view.dom : e?.current && (u = e.current), u)
3298
- return u.addEventListener("keydown", f, !0), () => {
3314
+ return u.addEventListener("keydown", m, !0), () => {
3299
3315
  u?.removeEventListener(
3300
3316
  "keydown",
3301
- f,
3317
+ m,
3302
3318
  !0
3303
3319
  );
3304
3320
  };
@@ -3479,7 +3495,7 @@ const Pi = $(
3479
3495
  onClick: h,
3480
3496
  children: l,
3481
3497
  style: d,
3482
- useColorValue: f = !1,
3498
+ useColorValue: m = !1,
3483
3499
  ...u
3484
3500
  }, g) => {
3485
3501
  const { editor: p } = dt(n), {
@@ -3492,7 +3508,7 @@ const Pi = $(
3492
3508
  } = Be({
3493
3509
  editor: p,
3494
3510
  highlightColor: e,
3495
- useColorValue: f,
3511
+ useColorValue: m,
3496
3512
  label: t || `Toggle highlight (${e})`,
3497
3513
  hideWhenUnavailable: i,
3498
3514
  mode: o,
@@ -3665,7 +3681,7 @@ function Be(n) {
3665
3681
  mode: s = "mark",
3666
3682
  useColorValue: a = !1,
3667
3683
  onApplied: h
3668
- } = n, { editor: l } = dt(e), d = ye(), [f, u] = R(!0), g = De(l, s), p = i && ko(i, a), x = Ro(l, p, s);
3684
+ } = n, { editor: l } = dt(e), d = ye(), [m, u] = R(!0), g = De(l, s), p = i && ko(i, a), x = Ro(l, p, s);
3669
3685
  V(() => {
3670
3686
  if (!l) return;
3671
3687
  const v = () => {
@@ -3703,12 +3719,12 @@ function Be(n) {
3703
3719
  v.preventDefault(), y();
3704
3720
  },
3705
3721
  {
3706
- enabled: f && g,
3722
+ enabled: m && g,
3707
3723
  enableOnContentEditable: !d,
3708
3724
  enableOnFormTags: !0
3709
3725
  }
3710
3726
  ), {
3711
- isVisible: f,
3727
+ isVisible: m,
3712
3728
  isActive: x,
3713
3729
  handleColorHighlight: y,
3714
3730
  handleRemoveHighlight: N,
@@ -3816,7 +3832,7 @@ function Ho({
3816
3832
  onApplied: o,
3817
3833
  ...s
3818
3834
  }) {
3819
- const { editor: a } = dt(n), [h, l] = R(!1), { isVisible: d, canColorHighlight: f, isActive: u, label: g, Icon: p } = Be({
3835
+ const { editor: a } = dt(n), [h, l] = R(!1), { isVisible: d, canColorHighlight: m, isActive: u, label: g, Icon: p } = Be({
3820
3836
  editor: a,
3821
3837
  hideWhenUnavailable: t,
3822
3838
  onApplied: o
@@ -3825,9 +3841,9 @@ function Ho({
3825
3841
  /* @__PURE__ */ c(Vi, { asChild: !0, children: /* @__PURE__ */ c(
3826
3842
  zi,
3827
3843
  {
3828
- disabled: !f,
3844
+ disabled: !m,
3829
3845
  "data-active-state": u ? "on" : "off",
3830
- "data-disabled": !f,
3846
+ "data-disabled": !m,
3831
3847
  "aria-pressed": u,
3832
3848
  "aria-label": g,
3833
3849
  tooltip: g,
@@ -3870,7 +3886,7 @@ const Wi = $(
3870
3886
  children: h,
3871
3887
  style: l,
3872
3888
  useColorValue: d = !1,
3873
- ...f
3889
+ ...m
3874
3890
  }, u) => {
3875
3891
  const { editor: g } = dt(n), {
3876
3892
  isVisible: p,
@@ -3914,7 +3930,7 @@ const Wi = $(
3914
3930
  onClick: st,
3915
3931
  ref: u,
3916
3932
  style: X,
3917
- ...f,
3933
+ ...m,
3918
3934
  children: [
3919
3935
  h || /* @__PURE__ */ c(
3920
3936
  "span",
@@ -4007,7 +4023,7 @@ function Pe({
4007
4023
  useColorValue: o = !1,
4008
4024
  onApplied: s
4009
4025
  } = {}) {
4010
- const { editor: a } = dt(n), h = ye(), [l, d] = R(!0), [f, u] = R(!1), g = Oe(a);
4026
+ const { editor: a } = dt(n), h = ye(), [l, d] = R(!0), [m, u] = R(!1), g = Oe(a);
4011
4027
  V(() => {
4012
4028
  if (!a) {
4013
4029
  d(!1);
@@ -4047,7 +4063,7 @@ function Pe({
4047
4063
  ), {
4048
4064
  isVisible: l,
4049
4065
  canTextColor: g,
4050
- isActive: f,
4066
+ isActive: m,
4051
4067
  handleTextColor: p,
4052
4068
  handleRemoveTextColor: x,
4053
4069
  label: t,
@@ -4153,7 +4169,7 @@ function Po({
4153
4169
  onApplied: o,
4154
4170
  ...s
4155
4171
  }) {
4156
- const { editor: a } = dt(n), [h, l] = R(!1), { isVisible: d, canTextColor: f, isActive: u, label: g, Icon: p } = Pe({
4172
+ const { editor: a } = dt(n), [h, l] = R(!1), { isVisible: d, canTextColor: m, isActive: u, label: g, Icon: p } = Pe({
4157
4173
  editor: a,
4158
4174
  hideWhenUnavailable: t,
4159
4175
  onApplied: o
@@ -4162,9 +4178,9 @@ function Po({
4162
4178
  /* @__PURE__ */ c(Vi, { asChild: !0, children: /* @__PURE__ */ c(
4163
4179
  Gi,
4164
4180
  {
4165
- disabled: !f,
4181
+ disabled: !m,
4166
4182
  "data-active-state": u ? "on" : "off",
4167
- "data-disabled": !f,
4183
+ "data-disabled": !m,
4168
4184
  "aria-pressed": u,
4169
4185
  "aria-label": g,
4170
4186
  tooltip: g,
@@ -4266,12 +4282,12 @@ function ys({ api: n }) {
4266
4282
  const [e, t] = R(null), [i, o] = R(1), [s, a] = R(1);
4267
4283
  return V(() => {
4268
4284
  if (!n) return;
4269
- const h = (f) => {
4270
- t(f), o(n.getState().viewport.scale), a(f.scaleWhenCreate || 1);
4285
+ const h = (m) => {
4286
+ t(m), o(n.getState().viewport.scale), a(m.scaleWhenCreate || 1);
4271
4287
  }, l = () => {
4272
4288
  t(null);
4273
- }, d = (f) => {
4274
- o(f);
4289
+ }, d = (m) => {
4290
+ o(m);
4275
4291
  };
4276
4292
  return n.on("texteditor:register", h), n.on("texteditor:unregister", l), n.on("viewport:scale:change", d), () => {
4277
4293
  n.off("texteditor:register", h), n.off("texteditor:unregister", l), n.off("viewport:scale:change", d);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@8btc/whiteboard",
3
3
  "private": false,
4
- "version": "0.0.20-alpha.21",
4
+ "version": "0.0.20-alpha.24",
5
5
  "type": "module",
6
6
  "main": "./dist/index.umd.js",
7
7
  "module": "./dist/index.js",
@@ -58,6 +58,7 @@
58
58
  "konva": "^10.0.12",
59
59
  "lucide-react": "^0.562.0",
60
60
  "mitt": "^3.0.1",
61
+ "radix-ui": "^1.4.3",
61
62
  "react": "^19.2.4",
62
63
  "react-dom": "^19.2.4",
63
64
  "react-hotkeys-hook": "^5.2.4",
@@ -68,6 +69,9 @@
68
69
  "zustand": "^5.0.9"
69
70
  },
70
71
  "devDependencies": {
72
+ "@dnd-kit/core": "^6.3.1",
73
+ "@dnd-kit/sortable": "^10.0.0",
74
+ "@dnd-kit/utilities": "^3.2.2",
71
75
  "@eslint/js": "^9.39.1",
72
76
  "@tailwindcss/vite": "^4.1.18",
73
77
  "@types/node": "^24.10.1",