/* 工具类样式 - 常用的辅助样式类 */

/* 文本颜色 */
.text--primary { color: var(--color-primary); }
.text--secondary { color: var(--color-secondary); }
.text--accent { color: var(--color-accent); }
.text--success { color: var(--color-success); }
.text--warning { color: var(--color-warning); }
.text--error { color: var(--color-error); }
.text--white { color: var(--color-white); }
.text--gray-50 { color: var(--color-gray-50); }
.text--gray-100 { color: var(--color-gray-100); }
.text--gray-200 { color: var(--color-gray-200); }
.text--gray-300 { color: var(--color-gray-300); }
.text--gray-400 { color: var(--color-gray-400); }
.text--gray-500 { color: var(--color-gray-500); }
.text--gray-600 { color: var(--color-gray-600); }
.text--gray-700 { color: var(--color-gray-700); }
.text--gray-800 { color: var(--color-gray-800); }
.text--gray-900 { color: var(--color-gray-900); }

/* 背景颜色 */
.bg--primary { background-color: var(--color-primary); }
.bg--secondary { background-color: var(--color-secondary); }
.bg--accent { background-color: var(--color-accent); }
.bg--success { background-color: var(--color-success); }
.bg--warning { background-color: var(--color-warning); }
.bg--error { background-color: var(--color-error); }
.bg--white { background-color: var(--color-white); }
.bg--gray-50 { background-color: var(--color-gray-50); }
.bg--gray-100 { background-color: var(--color-gray-100); }
.bg--gray-200 { background-color: var(--color-gray-200); }
.bg--gray-300 { background-color: var(--color-gray-300); }
.bg--gray-400 { background-color: var(--color-gray-400); }
.bg--gray-500 { background-color: var(--color-gray-500); }
.bg--gray-600 { background-color: var(--color-gray-600); }
.bg--gray-700 { background-color: var(--color-gray-700); }
.bg--gray-800 { background-color: var(--color-gray-800); }
.bg--gray-900 { background-color: var(--color-gray-900); }

/* 边框颜色 */
.border--primary { border-color: var(--color-primary); }
.border--secondary { border-color: var(--color-secondary); }
.border--accent { border-color: var(--color-accent); }
.border--success { border-color: var(--color-success); }
.border--warning { border-color: var(--color-warning); }
.border--error { border-color: var(--color-error); }
.border--white { border-color: var(--color-white); }
.border--gray-50 { border-color: var(--color-gray-50); }
.border--gray-100 { border-color: var(--color-gray-100); }
.border--gray-200 { border-color: var(--color-gray-200); }
.border--gray-300 { border-color: var(--color-gray-300); }
.border--gray-400 { border-color: var(--color-gray-400); }
.border--gray-500 { border-color: var(--color-gray-500); }
.border--gray-600 { border-color: var(--color-gray-600); }
.border--gray-700 { border-color: var(--color-gray-700); }
.border--gray-800 { border-color: var(--color-gray-800); }
.border--gray-900 { border-color: var(--color-gray-900); }

/* 边框样式 */
.border { border: var(--border-width-thin) solid var(--color-gray-300); }
.border--0 { border: 0; }
.border--t { border-top: var(--border-width-thin) solid var(--color-gray-300); }
.border--r { border-right: var(--border-width-thin) solid var(--color-gray-300); }
.border--b { border-bottom: var(--border-width-thin) solid var(--color-gray-300); }
.border--l { border-left: var(--border-width-thin) solid var(--color-gray-300); }

/* 边框宽度 */
.border--thin { border-width: var(--border-width-thin); }
.border--normal { border-width: var(--border-width-normal); }
.border--thick { border-width: var(--border-width-thick); }

/* 边框圆角 */
.rounded--none { border-radius: 0; }
.rounded--sm { border-radius: var(--border-radius-sm); }
.rounded--md { border-radius: var(--border-radius-md); }
.rounded--lg { border-radius: var(--border-radius-lg); }
.rounded--xl { border-radius: var(--border-radius-xl); }
.rounded--2xl { border-radius: var(--border-radius-2xl); }
.rounded--full { border-radius: var(--border-radius-full); }

/* 阴影 */
.shadow--none { box-shadow: none; }
.shadow--sm { box-shadow: var(--shadow-sm); }
.shadow--md { box-shadow: var(--shadow-md); }
.shadow--lg { box-shadow: var(--shadow-lg); }
.shadow--xl { box-shadow: var(--shadow-xl); }

/* 字体大小 */
.text--xs { font-size: var(--font-size-xs); }
.text--sm { font-size: var(--font-size-sm); }
.text--base { font-size: var(--font-size-base); }
.text--lg { font-size: var(--font-size-lg); }
.text--xl { font-size: var(--font-size-xl); }
.text--2xl { font-size: var(--font-size-2xl); }
.text--3xl { font-size: var(--font-size-3xl); }
.text--4xl { font-size: var(--font-size-4xl); }
.text--5xl { font-size: var(--font-size-5xl); }
.text--6xl { font-size: var(--font-size-6xl); }

/* 字体粗细 */
.font--light { font-weight: var(--font-weight-light); }
.font--normal { font-weight: var(--font-weight-normal); }
.font--medium { font-weight: var(--font-weight-medium); }
.font--semibold { font-weight: var(--font-weight-semibold); }
.font--bold { font-weight: var(--font-weight-bold); }

/* 行高 */
.leading--tight { line-height: var(--line-height-tight); }
.leading--normal { line-height: var(--line-height-normal); }
.leading--relaxed { line-height: var(--line-height-relaxed); }

/* 字体族 */
.font--sans { font-family: var(--font-family-primary); }
.font--mono { font-family: var(--font-family-mono); }

/* 文本装饰 */
.underline { text-decoration: underline; }
.no-underline { text-decoration: none; }
.line-through { text-decoration: line-through; }

/* 文本转换 */
.uppercase { text-transform: uppercase; }
.lowercase { text-transform: lowercase; }
.capitalize { text-transform: capitalize; }

/* 文本溢出 */
.truncate {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* 垂直对齐 */
.align--baseline { vertical-align: baseline; }
.align--top { vertical-align: top; }
.align--middle { vertical-align: middle; }
.align--bottom { vertical-align: bottom; }

/* 光标 */
.cursor--pointer { cursor: pointer; }
.cursor--default { cursor: default; }
.cursor--not-allowed { cursor: not-allowed; }
.cursor--help { cursor: help; }

/* 用户选择 */
.select--none { user-select: none; }
.select--text { user-select: text; }
.select--all { user-select: all; }

/* 指针事件 */
.pointer--none { pointer-events: none; }
.pointer--auto { pointer-events: auto; }

/* 可见性 */
.visible { visibility: visible; }
.invisible { visibility: hidden; }

/* 透明度 */
.opacity--0 { opacity: 0; }
.opacity--25 { opacity: 0.25; }
.opacity--50 { opacity: 0.5; }
.opacity--75 { opacity: 0.75; }
.opacity--100 { opacity: 1; }

/* 变换 */
.transform { transform: translateZ(0); }
.scale--0 { transform: scale(0); }
.scale--50 { transform: scale(0.5); }
.scale--75 { transform: scale(0.75); }
.scale--90 { transform: scale(0.9); }
.scale--95 { transform: scale(0.95); }
.scale--100 { transform: scale(1); }
.scale--105 { transform: scale(1.05); }
.scale--110 { transform: scale(1.1); }
.scale--125 { transform: scale(1.25); }
.scale--150 { transform: scale(1.5); }

/* 旋转 */
.rotate--0 { transform: rotate(0deg); }
.rotate--45 { transform: rotate(45deg); }
.rotate--90 { transform: rotate(90deg); }
.rotate--180 { transform: rotate(180deg); }
.rotate--270 { transform: rotate(270deg); }

/* 过渡 */
.transition { transition: all var(--transition-normal); }
.transition--fast { transition: all var(--transition-fast); }
.transition--slow { transition: all var(--transition-slow); }
.transition--none { transition: none; }

/* 动画 */
.animate--bounce { animation: bounce 1s infinite; }
.animate--pulse { animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; }
.animate--spin { animation: spin 1s linear infinite; }

/* 关键帧动画 */
@keyframes bounce {
    0%, 100% { transform: translateY(-25%); animation-timing-function: cubic-bezier(0.8, 0, 1, 1); }
    50% { transform: none; animation-timing-function: cubic-bezier(0, 0, 0.2, 1); }
}

@keyframes pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.5; }
}

@keyframes spin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

/* 响应式工具类 */
@media (max-width: 640px) {
    .sm\:d--none { display: none; }
    .sm\:d--block { display: block; }
    .sm\:text--center { text-align: center; }
}

@media (max-width: 768px) {
    .md\:d--none { display: none; }
    .md\:d--block { display: block; }
    .md\:text--center { text-align: center; }
}

@media (max-width: 1024px) {
    .lg\:d--none { display: none; }
    .lg\:d--block { display: block; }
    .lg\:text--center { text-align: center; }
}

@media (max-width: 1280px) {
    .xl\:d--none { display: none; }
    .xl\:d--block { display: block; }
    .xl\:text--center { text-align: center; }
}

/* 打印工具类 */
@media print {
    .print\:d--none { display: none; }
    .print\:d--block { display: block; }
}
