styles.scss 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. /* 应用层全局兜底:令牌覆盖、布局契约和无法下沉到组件的基础规则。 */
  2. @use './app/core/styles/base';
  3. @use './app/core/styles/palette';
  4. :root,
  5. .dark {
  6. --ok: var(--success);
  7. --ok-bg: var(--success-subtle);
  8. --ok-ink: var(--success);
  9. --crit: var(--danger);
  10. --crit-ink: var(--danger);
  11. --crit-soft: var(--danger-subtle);
  12. --warn-ink: var(--warning);
  13. --warn-bg: var(--warning-subtle);
  14. }
  15. html, body { height: 100%; margin: 0; padding: 0; }
  16. body {
  17. background: var(--canvas); color: var(--ink);
  18. font-size: var(--fs-15); line-height: 1.6;
  19. -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
  20. }
  21. /* AC-19.3:移动端输入框 ≥16px(底座用 Tailwind text-sm=14px,需 !important 压制)*/
  22. input, textarea, select { font-size: var(--fs-17) !important; }
  23. :root[data-palette] {
  24. .ui-m-tabbar--glass {
  25. background: linear-gradient(to top,
  26. color-mix(in srgb, var(--canvas) 94%, transparent) 45%,
  27. color-mix(in srgb, var(--canvas) 72%, transparent) 78%, transparent);
  28. }
  29. .ui-m-tabpill {
  30. background: color-mix(in srgb, var(--nav-surface) 90%, var(--surface));
  31. border-color: color-mix(in srgb, var(--nav-line) 70%, transparent);
  32. box-shadow: 0 8px 30px color-mix(in srgb, var(--nav-surface) 24%, transparent);
  33. }
  34. .ui-m-tabpill::before {
  35. background: linear-gradient(to bottom, color-mix(in srgb, var(--nav-ink) 18%, transparent), transparent 45%);
  36. }
  37. .ui-m-tab, .ui-m-tab i, .ui-m-tab em { color: var(--nav-text) !important; }
  38. .ui-m-tab.on { background: var(--nav-accent) !important; }
  39. .ui-m-tab.on i, .ui-m-tab.on em { color: var(--nav-on-brand) !important; }
  40. .ui-m-tab-badge, .ui-m-tab-dot { background: var(--danger) !important; }
  41. }
  42. .m-page--fixed { min-height: 100%; }
  43. @media (max-width: 767px) {
  44. .m-main > * > .m-header,
  45. .m-main > *:not(:has(.m-header)) .m-page > .m-head,
  46. .m-main > * .m-page > .page-title {
  47. position: sticky;
  48. top: 0;
  49. z-index: var(--z-affix);
  50. background: var(--canvas);
  51. }
  52. .m-main > *:not(:has(.m-header)) .m-page > .m-head,
  53. .m-main > * .m-page > .page-title {
  54. padding-top: var(--sp-2);
  55. }
  56. }
  57. router-outlet + * { animation: fade-in var(--motion-page) var(--ease-standard) both; }
  58. @keyframes fade-in { from { opacity: 0; } to { opacity: 1; } }
  59. * { scrollbar-width: thin; scrollbar-color: var(--edge-strong) transparent; }
  60. *::-webkit-scrollbar { width: 8px; height: 8px; }
  61. *::-webkit-scrollbar-track { background: transparent; }
  62. *::-webkit-scrollbar-thumb { background: var(--edge-strong); border-radius: var(--r-tag); }
  63. *::-webkit-scrollbar-thumb:hover { background: var(--muted); }
  64. @media (prefers-reduced-motion: reduce) { router-outlet + * { animation: none; } }
  65. /* Modal sheets own the bottom edge while open; keep the fixed TabBar from
  66. showing through the scrim or competing with the sheet actions. */
  67. body:has(.backdrop, .sheet-backdrop) .ui-m-tabbar--glass { display: none; }
  68. /* 全局字号缩放:ChatFontService 写 --ui-scale(16px=1.0),此处乘上;只乘字号不乘间距(覆盖底座生成物,ADR-006) */
  69. :root { --fs-9: calc(10.5px * var(--ui-scale, 1)); --fs-10: calc(11px * var(--ui-scale, 1)); --fs-11: calc(11.5px * var(--ui-scale, 1)); --fs-12: calc(12px * var(--ui-scale, 1)); --fs-13: calc(13px * var(--ui-scale, 1)); --fs-135: calc(13.5px * var(--ui-scale, 1)); --fs-15: calc(15px * var(--ui-scale, 1)); --fs-17: calc(17px * var(--ui-scale, 1)); }