MainContent.module.css 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. .main {
  2. flex: 1;
  3. display: flex;
  4. flex-direction: column;
  5. overflow: hidden;
  6. background: var(--bg-app);
  7. }
  8. .header {
  9. height: var(--topbar-height);
  10. padding: 0 var(--space-lg);
  11. border-bottom: 1px solid var(--border-light);
  12. display: flex;
  13. align-items: center;
  14. justify-content: space-between;
  15. background: var(--bg-surface);
  16. flex-shrink: 0;
  17. box-shadow: var(--shadow-sm);
  18. z-index: 5;
  19. }
  20. .title {
  21. font-size: 14px;
  22. font-weight: 500;
  23. color: var(--text-secondary);
  24. }
  25. .status {
  26. display: flex;
  27. align-items: center;
  28. gap: var(--space-xs);
  29. font-size: 13px;
  30. font-weight: 500;
  31. transition: all 200ms ease-in-out;
  32. }
  33. .statusDot {
  34. width: 6px;
  35. height: 6px;
  36. border-radius: var(--radius-full);
  37. transition: background-color 200ms ease-in-out;
  38. }
  39. .status.connected {
  40. color: var(--color-success);
  41. }
  42. .status.connected .statusDot {
  43. background-color: var(--color-success);
  44. box-shadow: 0 0 8px var(--color-success);
  45. }
  46. .status.disconnected {
  47. color: var(--text-tertiary);
  48. }
  49. .status.disconnected .statusDot {
  50. background-color: var(--border-medium);
  51. }
  52. .completedBadge {
  53. display: flex;
  54. align-items: center;
  55. gap: var(--space-xs);
  56. padding: 4px 12px;
  57. background-color: #ecfdf5; /* Emerald 50 */
  58. border: 1px solid var(--color-success);
  59. border-radius: var(--radius-full);
  60. color: var(--color-success);
  61. font-size: 13px;
  62. font-weight: 500;
  63. animation: fadeIn 300ms ease-out;
  64. }
  65. @keyframes fadeIn {
  66. from {
  67. opacity: 0;
  68. transform: translateY(-4px);
  69. }
  70. to {
  71. opacity: 1;
  72. transform: translateY(0);
  73. }
  74. }
  75. .headerRight {
  76. display: flex;
  77. align-items: center;
  78. gap: var(--space-md);
  79. }
  80. .btn {
  81. display: inline-flex;
  82. align-items: center;
  83. justify-content: center;
  84. height: 32px;
  85. padding: 0 var(--space-md);
  86. border-radius: var(--radius-md);
  87. font-size: 13px;
  88. font-weight: 500;
  89. cursor: pointer;
  90. transition: all var(--transition-fast);
  91. border: 1px solid var(--border-medium);
  92. background: var(--bg-surface);
  93. color: var(--text-secondary);
  94. outline: none;
  95. }
  96. .btn:hover {
  97. background: var(--bg-surface-hover);
  98. color: var(--text-primary);
  99. border-color: var(--border-medium);
  100. }
  101. .btn:active {
  102. background: var(--border-light);
  103. }
  104. .content {
  105. flex: 1;
  106. overflow: hidden;
  107. position: relative;
  108. background: var(--bg-app);
  109. }
  110. .loading {
  111. display: flex;
  112. align-items: center;
  113. justify-content: center;
  114. height: 100%;
  115. color: var(--text-tertiary);
  116. font-size: 14px;
  117. }
  118. .empty {
  119. display: flex;
  120. align-items: center;
  121. justify-content: center;
  122. height: 100%;
  123. color: var(--text-tertiary);
  124. font-size: 14px;
  125. }