.tippy-box[data-placement^=top]>.tippy-svg-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-svg-arrow:after,.tippy-box[data-placement^=top]>.tippy-svg-arrow>svg{top:16px;transform:rotate(180deg)}.tippy-box[data-placement^=bottom]>.tippy-svg-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-svg-arrow>svg{bottom:16px}.tippy-box[data-placement^=left]>.tippy-svg-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-svg-arrow:after,.tippy-box[data-placement^=left]>.tippy-svg-arrow>svg{transform:rotate(90deg);top:calc(50% - 3px);left:11px}.tippy-box[data-placement^=right]>.tippy-svg-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-svg-arrow:after,.tippy-box[data-placement^=right]>.tippy-svg-arrow>svg{transform:rotate(-90deg);top:calc(50% - 3px);right:11px}.tippy-svg-arrow{width:16px;height:16px;fill:#333;text-align:initial}.tippy-svg-arrow,.tippy-svg-arrow>svg{position:absolute}/**
 * @description 
 *   渐变边框
 *   已经全局导入了，不需要另外导入，参考 apps/platform/vite.config.ts#301
 * @param {string} @color - 渐变颜色
 * @param {number} @width - 边框宽度
 * @param {number} @radius - 圆角半径
 * @param {number} @zindex - 元素层级
 * @param {string} @fallback - 降级颜色
 * 
 * @example 用法 1
 *   &.checked {
 *     .gradient-border(var(--brand-color-gradient), 2px, var(--radius-s));
 *   }
 * @example 用法 2
 *   .script-card {
 *     border: 2px solid transparent;
 *     @apply bg-bg-color-select; // 可以实现 rgba 背景色
 *     &--selected {
 *       --border-top-right-radius: 10px; // 如果需要单独修改某个角
 *       --border-bottom-right-radius: 10px;
 *       .gradient-border(var(--brand-color-gradient), 2px, var(--radius-s));
 *     }
 *   }
*/
/**
 * @description 修复小数 dpr 导致的边框错位问题
 *   🌰 修复 1.5dpr 屏幕上，border-width 会被自动计算成 0.6667px，但是 top/left 不会。所以导致渐变边框会错位
 * @param {number} @border-width - 边框宽度，不能是 css 变量
 */
.vue-recycle-scroller{position:relative}
.vue-recycle-scroller.direction-vertical:not(.page-mode){overflow-y:auto}
.vue-recycle-scroller.direction-horizontal:not(.page-mode){overflow-x:auto}
.vue-recycle-scroller.direction-horizontal{display:flex}
.vue-recycle-scroller__slot{flex:auto 0 0}
.vue-recycle-scroller__item-wrapper{flex:1;box-sizing:border-box;overflow:hidden;position:relative}
.vue-recycle-scroller.ready .vue-recycle-scroller__item-view{position:absolute;top:0;left:0;will-change:transform}
.vue-recycle-scroller.direction-vertical .vue-recycle-scroller__item-wrapper{width:100%}
.vue-recycle-scroller.direction-horizontal .vue-recycle-scroller__item-wrapper{height:100%}
.vue-recycle-scroller.ready.direction-vertical .vue-recycle-scroller__item-view{width:100%}
.vue-recycle-scroller.ready.direction-horizontal .vue-recycle-scroller__item-view{height:100%}
.resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}
.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}
