/* You can add global styles to this file, and also import other style files */ /* Tailwind CSS 4.x 配置 */ @import 'tailwindcss'; @import './ui/styles.scss'; @source '../**/*.{js,ts,jsx,tsx}'; @source '../../packages/**/*.{js,ts,jsx,tsx}'; /* TrueGrowth 品牌全局样式 - 与 TDesign 主题保持一致 */ @theme { /* Tailwind 4.x 颜色定义 - 使用 TrueGrowth 品牌色 */ --color-background: #ffffff; --color-foreground: #171717; --color-card: #ffffff; --color-card-foreground: #171717; --color-popover: #ffffff; --color-popover-foreground: #171717; --color-primary: #ff5b00; --color-primary-foreground: #ffffff; --color-secondary: #111111; --color-secondary-foreground: #ffffff; --color-muted: #f5f5f5; --color-muted-foreground: #626262; --color-accent: #f5f5f5; --color-accent-foreground: #171717; --color-destructive: #ef4444; --color-destructive-foreground: #ffffff; --color-border: #e5e5e5; --color-input: #e5e5e5; --color-ring: #ff5b00; --radius: 0.5rem; } :root { /* TrueGrowth 可配置品牌 token:修改这组变量即可同步全局主题 */ --TrueGrowth-brand-primary: #ff5b00; --TrueGrowth-brand-primary-hover: #e14f00; --TrueGrowth-brand-primary-active: #c24100; --TrueGrowth-brand-secondary: #111111; --TrueGrowth-brand-secondary-light: #d9d9d9; --TrueGrowth-accent-create: #f97316; --TrueGrowth-accent-create-light: #e5e5e5; /* 兼容旧变量名,现统一映射到 TrueGrowth token */ --aitu-brand-primary: var(--TrueGrowth-brand-primary); --aitu-brand-primary-dark: var(--TrueGrowth-brand-primary-hover); --aitu-brand-primary-darker: var(--TrueGrowth-brand-primary-active); --aitu-brand-secondary: var(--TrueGrowth-brand-secondary); --aitu-brand-secondary-light: var(--TrueGrowth-brand-secondary-light); --aitu-accent-create: var(--TrueGrowth-accent-create); --aitu-accent-create-light: var(--TrueGrowth-accent-create-light); /* 中性色系 */ --aitu-neutral-900: #0f172a; --aitu-neutral-600: #475569; --aitu-neutral-400: #94a3b8; --aitu-neutral-200: #f1f5f9; --aitu-neutral-100: #ffffff; /* 功能色彩 */ --aitu-success: #059669; --aitu-warning: #e14f00; --aitu-error: #e11d48; /* 渐变色 */ --aitu-gradient-primary: #ff5b00; --aitu-gradient-brush: #ff5b00; /* 统一 UI token:新 UI 优先使用这组变量 */ --aitu-ui-brand: var(--aitu-brand-primary); --aitu-ui-brand-hover: var(--aitu-brand-primary-dark); --aitu-ui-brand-active: var(--aitu-brand-primary-darker); --aitu-ui-brand-text: #e14f00; --aitu-ui-brand-soft: rgba(255, 91, 0, 0.08); --aitu-ui-brand-softer: rgba(255, 91, 0, 0.04); --aitu-ui-brand-border: rgba(255, 91, 0, 0.34); --aitu-ui-brand-border-soft: rgba(255, 91, 0, 0.18); --aitu-ui-focus-ring: 0 0 0 3px rgba(255, 91, 0, 0.16); --aitu-ui-selected-bg: rgba(255, 91, 0, 0.08); --aitu-ui-hover-bg: rgba(17, 17, 17, 0.04); --aitu-ui-surface: #ffffff; --aitu-ui-surface-subtle: #fafafa; --aitu-ui-surface-muted: #f4f4f3; --aitu-ui-surface-elevated: rgba(255, 255, 255, 0.98); --aitu-ui-border-subtle: rgba(17, 17, 17, 0.055); --aitu-ui-border: rgba(17, 17, 17, 0.1); --aitu-ui-border-hover: rgba(17, 17, 17, 0.18); --aitu-ui-text-primary: #111111; --aitu-ui-text-secondary: #5f6368; --aitu-ui-text-tertiary: #9aa0a6; --aitu-ui-text-inverse: #ffffff; --aitu-ui-success: #15803d; --aitu-ui-success-soft: rgba(34, 197, 94, 0.12); --aitu-ui-success-border: rgba(34, 197, 94, 0.28); --aitu-ui-warning: #e14f00; --aitu-ui-warning-soft: #ffffff; --aitu-ui-warning-border: rgba(255, 91, 0, 0.32); --aitu-ui-danger: var(--aitu-error); --aitu-ui-danger-soft: rgba(233, 30, 99, 0.08); --aitu-ui-danger-border: rgba(233, 30, 99, 0.24); --aitu-ui-shadow-card: 0 1px 2px rgba(17, 17, 17, 0.04); --aitu-ui-shadow-hover: 0 8px 20px rgba(17, 17, 17, 0.07); --aitu-ui-shadow-selected: 0 0 0 1px rgba(255, 91, 0, 0.34); --aitu-ui-shadow-popover: 0 14px 34px rgba(17, 17, 17, 0.12); --aitu-ui-shadow-soft: 0 1px 2px rgba(17, 17, 17, 0.04); } /* 在全局样式中设置 */ :root { color-scheme: light; --td-brand-color: #ff5b00 !important; --td-brand-color-hover: #e14f00 !important; --td-brand-color-active: #c24100 !important; --td-brand-color-focus: rgba(255, 91, 0, 0.18) !important; --td-brand-color-light: rgba(255, 91, 0, 0.08) !important; --td-brand-color-light-hover: rgba(255, 91, 0, 0.12) !important; --td-bg-color-page: #fafafa !important; --td-bg-color-container: #ffffff !important; --td-bg-color-secondarycontainer: #f4f4f3 !important; --td-bg-color-secondarycontainer-hover: #eeeeec !important; --td-text-color-primary: #111111 !important; --td-text-color-secondary: #5f6368 !important; --td-text-color-placeholder: #9aa0a6 !important; --td-border-level-1-color: rgba(17, 17, 17, 0.1) !important; --td-border-level-2-color: rgba(17, 17, 17, 0.06) !important; --td-component-border: rgba(17, 17, 17, 0.1) !important; --td-radius-default: 8px !important; } :root[data-tg-theme='dark'] { color-scheme: dark; --aitu-ui-surface: #090909; --aitu-ui-surface-subtle: #111111; --aitu-ui-surface-muted: #181818; --aitu-ui-surface-elevated: rgba(12, 12, 12, 0.94); --aitu-ui-border-subtle: rgba(255, 255, 255, 0.06); --aitu-ui-border: rgba(255, 255, 255, 0.1); --aitu-ui-border-hover: rgba(255, 255, 255, 0.2); --aitu-ui-text-primary: #f5f5f5; --aitu-ui-text-secondary: #a7a7a7; --aitu-ui-text-tertiary: #707070; --aitu-ui-brand-soft: rgba(255, 91, 0, 0.14); --aitu-ui-brand-softer: rgba(255, 91, 0, 0.08); --aitu-ui-hover-bg: rgba(255, 255, 255, 0.06); --td-bg-color-page: #060606 !important; --td-bg-color-container: #0d0d0d !important; --td-bg-color-secondarycontainer: #171717 !important; --td-bg-color-secondarycontainer-hover: rgba(255, 255, 255, 0.08) !important; --td-text-color-primary: #f5f5f5 !important; --td-text-color-secondary: #a7a7a7 !important; --td-text-color-placeholder: #707070 !important; --td-border-level-1-color: rgba(255, 255, 255, 0.12) !important; --td-border-level-2-color: rgba(255, 255, 255, 0.08) !important; --td-component-border: rgba(255, 255, 255, 0.12) !important; } body { margin: 0; padding: 0; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'PingFang SC', 'Noto Sans', 'Noto Sans CJK SC', 'Microsoft Yahei', 'Hiragino Sans GB', Arial, sans-serif; color: var(--aitu-ui-text-primary); background: var(--aitu-ui-surface); } :root[data-tg-theme='dark'] body, :root[data-theme='dark'] body { background: var(--td-bg-color-page, #060606); } html, body { height: 100%; min-height: 100vh; width: 100%; overflow: hidden; /* 禁用触摸缩放 - 完全禁止 pinch-zoom */ touch-action: none; -ms-touch-action: none; } #root { height: 100%; width: 100%; overflow: hidden; /* 同样完全禁用触摸动作,防止页面缩放 */ touch-action: none; -ms-touch-action: none; } button, input, select, textarea { font: inherit; } button { letter-spacing: 0; } button svg, a svg, [role='button'] svg { flex: 0 0 auto; display: block; } input, select, textarea { color: var(--aitu-ui-text-primary); caret-color: var(--aitu-ui-brand); } input::placeholder, textarea::placeholder, .t-input__inner::placeholder, .t-textarea__inner::placeholder { color: var(--aitu-ui-text-tertiary); } input:focus, select:focus, textarea:focus { border-color: var(--aitu-ui-brand-border) !important; box-shadow: var(--aitu-ui-focus-ring); } select { appearance: none; background-image: linear-gradient( 45deg, transparent 50%, var(--aitu-ui-text-secondary) 50% ), linear-gradient(135deg, var(--aitu-ui-text-secondary) 50%, transparent 50%); background-position: calc(100% - 17px) 50%, calc(100% - 12px) 50%; background-size: 5px 5px, 5px 5px; background-repeat: no-repeat; padding-right: 34px !important; } .t-input, .t-textarea__inner, .t-select .t-input, .t-input-number, .t-date-picker, .t-range-input, .t-upload, .t-cascader { border-radius: 8px !important; } .t-input, .t-select .t-input, .t-input-number, .t-date-picker, .t-range-input { min-height: 38px; background: var(--aitu-ui-surface-elevated) !important; border-color: var(--aitu-ui-border) !important; color: var(--aitu-ui-text-primary) !important; transition: border-color 0.16s ease, box-shadow 0.16s ease, background 0.16s ease; } .t-input__wrap { min-width: 0; } .t-input-number { display: inline-flex !important; align-items: center; min-width: 0; } .t-input-number.t-input-number--normal { padding: 0 !important; } .t-input-number .t-input__wrap { flex: 1 1 auto; min-width: 0; } .t-input-number.t-input-number--normal .t-input { width: 100%; } :root[data-tg-theme='dark'] .t-input, :root[data-tg-theme='dark'] .t-select .t-input, :root[data-tg-theme='dark'] .t-input-number, :root[data-tg-theme='dark'] .t-date-picker, :root[data-tg-theme='dark'] .t-range-input { box-shadow: none; } .t-input:hover, .t-select:hover .t-input, .t-input-number:hover, .t-date-picker:hover, .t-range-input:hover { border-color: var(--aitu-ui-border-hover) !important; background: var(--aitu-ui-surface) !important; } .t-input.t-is-focused, .t-is-focused .t-input, .t-input:focus-within, .t-textarea__inner:focus, .t-textarea__inner:focus-within, .t-select.t-is-focused .t-input, .t-input-number.t-is-focused, .t-date-picker.t-is-focused, .t-range-input.t-is-focused { border-color: var(--aitu-ui-brand-border) !important; box-shadow: var(--aitu-ui-focus-ring) !important; } .t-textarea__inner { background: var(--aitu-ui-surface-elevated) !important; border-color: var(--aitu-ui-border) !important; color: var(--aitu-ui-text-primary) !important; line-height: 1.6; resize: vertical; } .t-input__prefix-icon, .t-input__suffix-icon, .t-select__right-icon, .t-input-adornment, .t-button__icon, .t-button__suffix { display: inline-flex !important; align-items: center !important; justify-content: center !important; flex: 0 0 auto !important; line-height: 0 !important; } .t-button__icon, .t-button__suffix, .t-input__prefix-icon, .t-input__suffix-icon, .t-select__right-icon { width: 1em; min-width: 1em; height: 1em; min-height: 1em; } .t-input__prefix-icon svg, .t-input__suffix-icon svg, .t-select__right-icon svg, .t-button__icon svg, .t-button__suffix svg, .t-button svg, .t-tag svg, .t-radio-button svg, .t-checkbox svg { width: 1em; min-width: 1em; height: 1em; min-height: 1em; display: block; flex: 0 0 auto; } .t-button { border-radius: 8px !important; font-weight: 700; letter-spacing: 0; display: inline-flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; min-width: 0; line-height: 1 !important; vertical-align: middle; } .t-button--shape-square { width: 38px !important; min-width: 38px !important; max-width: 38px !important; height: 38px !important; min-height: 38px !important; max-height: 38px !important; padding: 0 !important; flex: 0 0 38px !important; } .t-button--shape-square.t-size-s { width: 36px !important; min-width: 36px !important; max-width: 36px !important; height: 36px !important; min-height: 36px !important; max-height: 36px !important; flex-basis: 36px !important; } .t-dialog__footer { display: flex !important; align-items: center !important; justify-content: flex-end !important; flex-wrap: wrap !important; gap: 10px !important; } .t-dialog__footer .t-button { min-height: 40px !important; border-radius: 10px !important; padding: 0 16px !important; } .t-dialog__footer .t-button--shape-square { width: 40px !important; min-width: 40px !important; max-width: 40px !important; height: 40px !important; min-height: 40px !important; max-height: 40px !important; padding: 0 !important; border-radius: 12px !important; flex-basis: 40px !important; } .t-dialog :is(.t-input__wrap, .t-input__inner, .t-input-number .t-input) { background: transparent !important; border: 0 !important; box-shadow: none !important; } .t-button__text { display: inline-flex !important; align-items: center !important; justify-content: center !important; min-width: 0; line-height: 1.2 !important; white-space: nowrap; } :root[data-tg-theme='dark'], :root[data-theme='dark'] { .t-dialog, .t-dialog__wrap, .t-dialog__position, .t-dialog__body, .t-dialog__footer, .t-drawer, .t-drawer__body, .t-popup, .t-popup__content, .t-select__dropdown, .t-dropdown__menu, .t-cascader__panel, .t-tree, .t-list, .t-card { background: var(--aitu-ui-surface, #0d0d0d) !important; color: var(--aitu-ui-text-primary, #f5f5f5) !important; border-color: var(--aitu-ui-border, rgba(255, 255, 255, 0.12)) !important; } .t-dialog__header, .t-drawer__header, .t-card__header { background: var(--aitu-ui-surface, #0d0d0d) !important; color: var(--aitu-ui-text-primary, #f5f5f5) !important; border-color: var(--aitu-ui-border, rgba(255, 255, 255, 0.12)) !important; } .t-input, .t-textarea__inner, .t-select .t-input, .t-input-number, .t-date-picker, .t-range-input, .t-upload__dragger, .t-upload__card, .t-radio-button, .t-checkbox { background: var(--aitu-ui-surface-elevated, #141414) !important; color: var(--aitu-ui-text-primary, #f5f5f5) !important; border-color: var(--aitu-ui-border, rgba(255, 255, 255, 0.12)) !important; box-shadow: none !important; } .t-button:not(.t-button--theme-primary):not(.t-button--theme-danger) { background: var(--aitu-ui-surface-elevated, #141414) !important; color: var(--aitu-ui-text-primary, #f5f5f5) !important; border-color: var(--aitu-ui-border, rgba(255, 255, 255, 0.12)) !important; } .t-button:not(.t-button--theme-primary):not(.t-button--theme-danger):hover { background: var(--aitu-ui-hover-bg, rgba(255, 255, 255, 0.08)) !important; color: var(--aitu-ui-text-primary, #f5f5f5) !important; border-color: var( --aitu-ui-border-hover, rgba(255, 255, 255, 0.22) ) !important; } .t-input__inner, .t-textarea__inner, .t-select-input, .t-input-number__input, .t-select__single, .t-select__placeholder { color: var(--aitu-ui-text-primary, #f5f5f5) !important; } .t-input__inner::placeholder, .t-textarea__inner::placeholder { color: var(--aitu-ui-text-tertiary, #777777) !important; } .t-select-option, .t-dropdown__item, .t-cascader__item, .t-tree__item, .t-list-item { background: transparent !important; color: var(--aitu-ui-text-secondary, #b7b7b7) !important; } .t-select-option:hover, .t-dropdown__item:hover, .t-cascader__item:hover, .t-tree__item:hover, .t-list-item:hover, .t-select-option.t-is-selected, .t-dropdown__item.t-is-active { background: var(--aitu-ui-hover-bg, rgba(255, 255, 255, 0.08)) !important; color: var(--aitu-ui-text-primary, #f5f5f5) !important; } .t-divider, .t-dialog__footer, .t-drawer__footer { border-color: var(--aitu-ui-border, rgba(255, 255, 255, 0.12)) !important; } } .t-button--theme-primary { border-color: var(--aitu-ui-brand) !important; background: var(--aitu-ui-brand) !important; box-shadow: none; } .t-button--theme-primary:hover { border-color: var(--aitu-ui-brand-hover) !important; background: var(--aitu-ui-brand-hover) !important; } .t-button--theme-default:hover, .t-button--variant-outline:hover { color: var(--aitu-ui-brand) !important; border-color: var(--aitu-ui-brand-border) !important; background: var(--aitu-ui-hover-bg) !important; } .t-dialog, .t-drawer, .t-popup, .t-dropdown__menu, .t-select__dropdown, .t-cascader__dropdown { border-radius: 8px !important; border-color: var(--aitu-ui-border-subtle) !important; background: var(--aitu-ui-surface) !important; color: var(--aitu-ui-text-primary) !important; box-shadow: var(--aitu-ui-shadow-popover) !important; } /* Hover tips are lightweight labels, not nested popover cards. */ .tg-hover-tip-popover { padding: 0 !important; border: 0 !important; border-radius: 10px !important; background: transparent !important; box-shadow: none !important; } .tg-hover-tip-popover .t-popup__content { padding: 0 !important; border: 0 !important; border-radius: 10px !important; background: transparent !important; box-shadow: none !important; } .tg-hover-tip { max-width: min(320px, calc(100vw - 32px)); padding: 9px 12px !important; border: 1px solid rgba(17, 24, 39, 0.1) !important; border-radius: 10px !important; background: rgba(255, 255, 255, 0.96) !important; color: var(--aitu-ui-text-primary, #1f2937) !important; font-size: 13px !important; font-weight: 650 !important; line-height: 1.45 !important; box-shadow: 0 10px 24px rgba(17, 24, 39, 0.1) !important; backdrop-filter: blur(10px); } .tg-hover-tip-popover .t-popup__arrow, .tg-hover-tip-popover .t-popup__arrow::before { border-color: rgba(17, 24, 39, 0.1) !important; background: rgba(255, 255, 255, 0.96) !important; box-shadow: none !important; } :root[data-tg-theme='dark'] .tg-hover-tip, :root[data-theme='dark'] .tg-hover-tip { border-color: rgba(255, 255, 255, 0.12) !important; background: rgba(24, 24, 24, 0.96) !important; color: var(--aitu-ui-text-primary, #f5f5f5) !important; box-shadow: 0 12px 28px rgba(0, 0, 0, 0.35) !important; } :root[data-tg-theme='dark'] .tg-hover-tip-popover .t-popup__arrow, :root[data-tg-theme='dark'] .tg-hover-tip-popover .t-popup__arrow::before, :root[data-theme='dark'] .tg-hover-tip-popover .t-popup__arrow, :root[data-theme='dark'] .tg-hover-tip-popover .t-popup__arrow::before { border-color: rgba(255, 255, 255, 0.12) !important; background: rgba(24, 24, 24, 0.96) !important; } /* 品牌色彩应用到常用元素 */ a { color: var(--aitu-brand-primary); text-decoration: none; &:hover { color: var(--aitu-brand-primary-dark); } &:active { color: var(--aitu-brand-primary-darker); } } /* 选中文本的品牌色彩 */ ::selection { background-color: rgba(255, 91, 0, 0.2); color: var(--aitu-neutral-900); } ::-moz-selection { background-color: rgba(255, 91, 0, 0.2); color: var(--aitu-neutral-900); } /* 滚动条样式 */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: var(--aitu-neutral-200); border-radius: 4px; } ::-webkit-scrollbar-thumb { background: var(--aitu-neutral-400); border-radius: 4px; &:hover { background: var(--aitu-neutral-600); } } .drawnix-console { position: absolute; top: 50%; transform: translateY(-50%); left: 0; height: 200px; width: 200px; overflow: auto; background-color: var(--aitu-neutral-900); color: var(--aitu-neutral-100); padding: 8px; opacity: 0.5; border-radius: 8px; font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace; font-size: 12px; line-height: 1.4; box-shadow: var(--aitu-ui-shadow-popover); } /* 品牌渐变背景类 */ .aitu-gradient-bg { background: var(--aitu-gradient-primary); } .aitu-gradient-text { background: var(--aitu-gradient-primary); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* 品牌按钮样式 */ .aitu-button-primary { background: var(--aitu-brand-primary); color: white; border: 1px solid var(--aitu-brand-primary); padding: 8px 16px; border-radius: 6px; font-weight: 500; cursor: pointer; transition: all 0.2s ease; &:hover { background: var(--aitu-brand-primary-dark); border-color: var(--aitu-brand-primary-dark); box-shadow: none; } &:active { background: var(--aitu-brand-primary-darker); border-color: var(--aitu-brand-primary-darker); transform: translateY(0); } } .aitu-button-secondary { background: var(--aitu-brand-secondary); color: white; border: 1px solid var(--aitu-brand-secondary); padding: 8px 16px; border-radius: 6px; font-weight: 500; cursor: pointer; transition: all 0.2s ease; &:hover { background: var(--aitu-brand-secondary-light); border-color: var(--aitu-brand-secondary-light); box-shadow: none; } } /* 响应式设计 */ @media (max-width: 768px) { .drawnix-console { width: 150px; height: 150px; font-size: 10px; } } @media (prefers-reduced-motion: reduce) { * { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } }