/**
 * 框架结构样式（锁定）：全局 token、页面骨架、表单聚焦、滚动条、页面过渡、通用工具类。
 * 宿主只应提供主题色（admin/src/styles/theme.css）；勿改此文件做换肤。
 * 业务自定义请用 scoped + :deep() 穿透覆盖。
 * CRUD 弹窗壳（.vm-crud-shell__*）在 DialogContent.vue；控件尺寸细节在 Input / Select 组件内。
 */

:root {
  --radius: 20px;
  --shadow-soft: 0 10px 30px rgba(40, 50, 120, 0.06);
  --shadow-card: 0 8px 24px rgba(40, 50, 120, 0.05);

  --vm-control-height: 32px;
  --vm-control-radius: 10px;
  --vm-control-padding-x: 10px;
  --vm-control-font-size: 13px;
}

.dark {
  --shadow-soft: 0 10px 30px rgba(0, 0, 0, 0.35);
  --shadow-card: 0 8px 24px rgba(0, 0, 0, 0.28);
}

/* 全局骨架（不依赖 @apply，避免 core CSS 绑死 Tailwind 构建） */
* {
  border-color: var(--border);
}

html {
  font-size: 16px;
}

html,
body,
#app {
  height: 100%;
}

body {
  background: var(--background);
  color: var(--foreground);
  font-size: 14px;
  font-weight: 500;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* 表单聚焦：细边框，无外圈粗 ring */
:where(
  input:not([type='checkbox']):not([type='radio']):not([type='range']):not([type='file']):not([type='hidden']):not([type='button']):not([type='submit']):not([type='reset']),
  textarea,
  [data-slot='input'],
  [data-slot='select-trigger']
) {
  outline: none;
}

:where(
  input:not([type='checkbox']):not([type='radio']):not([type='range']):not([type='file']):not([type='hidden']):not([type='button']):not([type='submit']):not([type='reset']),
  textarea,
  [data-slot='input'],
  [data-slot='select-trigger']
):is(:focus, :focus-visible) {
  border-color: var(--focus-border) !important;
  box-shadow: none !important;
  --tw-ring-shadow: 0 0 #0000 !important;
  --tw-ring-offset-shadow: 0 0 #0000 !important;
}

.page-enter-active,
.page-leave-active {
  transition:
    opacity 0.2s ease,
    transform 0.2s ease;
}
.page-enter-from {
  opacity: 0;
  transform: translateY(6px);
}
.page-leave-to {
  opacity: 0;
  transform: translateY(-3px);
}

/* 细圆角滚动条（无轨道背景）；颜色由主题 --scrollbar-thumb* 提供 */
* {
  scrollbar-width: thin;
  scrollbar-color: var(--scrollbar-thumb) transparent;
}

*::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}

*::-webkit-scrollbar-track {
  background: transparent;
}

*::-webkit-scrollbar-thumb {
  background: var(--scrollbar-thumb);
  border: 2px solid transparent;
  background-clip: padding-box;
  border-radius: 999px;
}

*::-webkit-scrollbar-thumb:hover {
  background: var(--scrollbar-thumb-hover);
  border: 2px solid transparent;
  background-clip: padding-box;
}

.vm-scroll {
  scrollbar-width: thin;
  scrollbar-color: var(--scrollbar-thumb) transparent;
}

/* Dialog 内 Teleport 浮层：modal 时 body pointer-events:none，浮层需显式恢复 */
.vm-dialog-float {
  pointer-events: auto;
}
