adminator-admin-dashboard 2.9.0 → 4.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/CHANGELOG.md +422 -0
  2. package/CLAUDE.md +126 -154
  3. package/README.md +322 -376
  4. package/dist/2026.js +8751 -0
  5. package/dist/2026.js.map +1 -0
  6. package/dist/404.html +36 -16
  7. package/dist/500.html +36 -16
  8. package/dist/assets/static/images/logo.svg +3 -3
  9. package/dist/basic-table.html +152 -699
  10. package/dist/blank.html +42 -507
  11. package/dist/buttons.html +152 -448
  12. package/dist/calendar.html +246 -658
  13. package/dist/charts.html +124 -658
  14. package/dist/chat.html +209 -706
  15. package/dist/compose.html +141 -618
  16. package/dist/datatable.html +467 -991
  17. package/dist/email.html +430 -943
  18. package/dist/forms.html +208 -733
  19. package/dist/google-maps.html +123 -513
  20. package/dist/index.html +436 -1041
  21. package/dist/runtime.js +1299 -0
  22. package/dist/runtime.js.map +1 -0
  23. package/dist/signin.html +92 -92
  24. package/dist/signup.html +106 -91
  25. package/dist/ui.html +268 -897
  26. package/dist/vector-maps.html +132 -511
  27. package/dist/vendor-chartjs.js +14593 -0
  28. package/dist/vendor-chartjs.js.map +1 -0
  29. package/dist/vendor-fullcalendar.js +14793 -0
  30. package/dist/vendor-fullcalendar.js.map +1 -0
  31. package/dist/vendors.js +3758 -0
  32. package/dist/vendors.js.map +1 -0
  33. package/package.json +47 -50
  34. package/src/404.html +35 -15
  35. package/src/500.html +35 -15
  36. package/src/assets/scripts/2026/Shell.js +312 -0
  37. package/src/assets/scripts/2026/calendar.js +123 -0
  38. package/src/assets/scripts/2026/charts.js +259 -0
  39. package/src/assets/scripts/2026/index.js +35 -0
  40. package/src/assets/scripts/2026/init.js +207 -0
  41. package/src/assets/scripts/2026/maps.js +78 -0
  42. package/src/assets/scripts/2026/palette.js +266 -0
  43. package/src/assets/static/images/logo.svg +3 -3
  44. package/src/assets/styles/2026/_animations.scss +14 -0
  45. package/src/assets/styles/2026/_auth.scss +215 -0
  46. package/src/assets/styles/2026/_base.scss +37 -0
  47. package/src/assets/styles/2026/_calendar.scss +380 -0
  48. package/src/assets/styles/2026/_charts.scss +44 -0
  49. package/src/assets/styles/2026/_chat.scss +350 -0
  50. package/src/assets/styles/2026/_components.scss +140 -0
  51. package/src/assets/styles/2026/_dashboard.scss +520 -0
  52. package/src/assets/styles/2026/_data.scss +130 -0
  53. package/src/assets/styles/2026/_dropdowns.scss +128 -0
  54. package/src/assets/styles/2026/_email.scss +599 -0
  55. package/src/assets/styles/2026/_error.scss +98 -0
  56. package/src/assets/styles/2026/_forms.scss +215 -0
  57. package/src/assets/styles/2026/_fullcalendar.scss +134 -0
  58. package/src/assets/styles/2026/_palette.scss +173 -0
  59. package/src/assets/styles/2026/_responsive.scss +229 -0
  60. package/src/assets/styles/2026/_shell.scss +290 -0
  61. package/src/assets/styles/2026/_tokens.scss +80 -0
  62. package/src/assets/styles/2026/_ui.scss +365 -0
  63. package/src/assets/styles/2026/index.scss +23 -0
  64. package/src/basic-table.html +153 -710
  65. package/src/blank.html +42 -517
  66. package/src/buttons.html +152 -458
  67. package/src/calendar.html +246 -668
  68. package/src/charts.html +124 -668
  69. package/src/chat.html +209 -716
  70. package/src/compose.html +142 -629
  71. package/src/datatable.html +466 -1000
  72. package/src/email.html +429 -952
  73. package/src/forms.html +207 -742
  74. package/src/google-maps.html +128 -523
  75. package/src/index.html +438 -1050
  76. package/src/signin.html +92 -92
  77. package/src/signup.html +106 -91
  78. package/src/ui.html +267 -906
  79. package/src/vector-maps.html +133 -522
  80. package/dist/1e59d2330b4c6deb84b3.ttf +0 -0
  81. package/dist/20fd1704ea223900efa9.woff2 +0 -0
  82. package/dist/29b39089170885ae2967.woff +0 -0
  83. package/dist/8b43027f47b20503057d.eot +0 -0
  84. package/dist/9bad94440d49256265a5.eot +0 -0
  85. package/dist/assets/fontawesome-webfont.svg +0 -2671
  86. package/dist/assets/themify.svg +0 -362
  87. package/dist/eda8b94308c6f538f04a.ttf +0 -0
  88. package/dist/f691f37e57f04c152e23.woff +0 -0
  89. package/dist/main.js +0 -61331
  90. package/dist/main.js.map +0 -1
  91. package/src/assets/scripts/app 2.js +0 -645
  92. package/src/assets/scripts/app.js +0 -645
  93. package/src/assets/scripts/charts/chartJS/index.js +0 -148
  94. package/src/assets/scripts/charts/easyPieChart/index.js +0 -200
  95. package/src/assets/scripts/charts/index.js +0 -3
  96. package/src/assets/scripts/charts/sparkline/index.js +0 -208
  97. package/src/assets/scripts/chat/index.js +0 -11
  98. package/src/assets/scripts/components/Chart.js +0 -1390
  99. package/src/assets/scripts/components/Sidebar.js +0 -241
  100. package/src/assets/scripts/constants/colors.js +0 -274
  101. package/src/assets/scripts/datatable/index.js +0 -379
  102. package/src/assets/scripts/datepicker/index.js +0 -302
  103. package/src/assets/scripts/email/index.js +0 -25
  104. package/src/assets/scripts/fullcalendar/index.js +0 -86
  105. package/src/assets/scripts/googleMaps/index.js +0 -93
  106. package/src/assets/scripts/index.js +0 -18
  107. package/src/assets/scripts/masonry/index.js +0 -14
  108. package/src/assets/scripts/popover/index.js +0 -109
  109. package/src/assets/scripts/scrollbar/index.js +0 -10
  110. package/src/assets/scripts/search/index.js +0 -15
  111. package/src/assets/scripts/sidebar/index.js +0 -140
  112. package/src/assets/scripts/skycons/index.js +0 -52
  113. package/src/assets/scripts/ui/index.js +0 -412
  114. package/src/assets/scripts/utils/date.js +0 -242
  115. package/src/assets/scripts/utils/dom.js +0 -349
  116. package/src/assets/scripts/utils/index.js +0 -45
  117. package/src/assets/scripts/utils/theme.js +0 -107
  118. package/src/assets/scripts/vectorMaps/index.js +0 -277
  119. package/src/assets/styles/index.scss +0 -801
  120. package/src/assets/styles/spec/components/easyPieChart.scss +0 -11
  121. package/src/assets/styles/spec/components/footer.scss +0 -4
  122. package/src/assets/styles/spec/components/forms.scss +0 -288
  123. package/src/assets/styles/spec/components/index.scss +0 -9
  124. package/src/assets/styles/spec/components/loader.scss +0 -46
  125. package/src/assets/styles/spec/components/masonry.scss +0 -1
  126. package/src/assets/styles/spec/components/pageContainer.scss +0 -255
  127. package/src/assets/styles/spec/components/progressBar.scss +0 -6
  128. package/src/assets/styles/spec/components/sidebar.scss +0 -642
  129. package/src/assets/styles/spec/components/topbar.scss +0 -455
  130. package/src/assets/styles/spec/generic/base.scss +0 -102
  131. package/src/assets/styles/spec/generic/index.scss +0 -1
  132. package/src/assets/styles/spec/index.scss +0 -4
  133. package/src/assets/styles/spec/screens/chat.scss +0 -147
  134. package/src/assets/styles/spec/screens/email.scss +0 -108
  135. package/src/assets/styles/spec/screens/index.scss +0 -2
  136. package/src/assets/styles/spec/settings/baseColors.scss +0 -103
  137. package/src/assets/styles/spec/settings/borders.scss +0 -6
  138. package/src/assets/styles/spec/settings/breakpoints.scss +0 -26
  139. package/src/assets/styles/spec/settings/fonts.scss +0 -4
  140. package/src/assets/styles/spec/settings/index.scss +0 -4
  141. package/src/assets/styles/spec/settings/materialColors.scss +0 -550
  142. package/src/assets/styles/spec/tools/index.scss +0 -1
  143. package/src/assets/styles/spec/tools/mixins/clearfix.scss +0 -15
  144. package/src/assets/styles/spec/tools/mixins/index.scss +0 -3
  145. package/src/assets/styles/spec/tools/mixins/mediaQueriesRanges.scss +0 -58
  146. package/src/assets/styles/spec/tools/mixins/placeholder.scss +0 -10
  147. package/src/assets/styles/spec/utils/colors.scss +0 -33
  148. package/src/assets/styles/spec/utils/index.scss +0 -2
  149. package/src/assets/styles/spec/utils/layout/helpers/border.scss +0 -78
  150. package/src/assets/styles/spec/utils/layout/helpers/flex.scss +0 -220
  151. package/src/assets/styles/spec/utils/layout/helpers/index.scss +0 -11
  152. package/src/assets/styles/spec/utils/layout/helpers/layout.scss +0 -137
  153. package/src/assets/styles/spec/utils/layout/helpers/lists.scss +0 -23
  154. package/src/assets/styles/spec/utils/layout/helpers/margin.scss +0 -266
  155. package/src/assets/styles/spec/utils/layout/helpers/objects.scss +0 -91
  156. package/src/assets/styles/spec/utils/layout/helpers/padding.scss +0 -147
  157. package/src/assets/styles/spec/utils/layout/helpers/positions.scss +0 -118
  158. package/src/assets/styles/spec/utils/layout/helpers/pseudo.scss +0 -6
  159. package/src/assets/styles/spec/utils/layout/helpers/sizes.scss +0 -157
  160. package/src/assets/styles/spec/utils/layout/helpers/typography.scss +0 -127
  161. package/src/assets/styles/spec/utils/layout/index.scss +0 -3
  162. package/src/assets/styles/spec/utils/layout/mixins/generateResponsive.scss +0 -25
  163. package/src/assets/styles/spec/utils/layout/mixins/index.scss +0 -2
  164. package/src/assets/styles/spec/utils/layout/mixins/mediaQueryCondition.scss +0 -28
  165. package/src/assets/styles/spec/utils/layout/utils/center.scss +0 -54
  166. package/src/assets/styles/spec/utils/layout/utils/gap.scss +0 -229
  167. package/src/assets/styles/spec/utils/layout/utils/index.scss +0 -5
  168. package/src/assets/styles/spec/utils/layout/utils/layers.scss +0 -5
  169. package/src/assets/styles/spec/utils/layout/utils/peers.scss +0 -35
  170. package/src/assets/styles/utils/mobile.scss +0 -954
  171. package/src/assets/styles/utils/theme.css +0 -97
  172. package/src/assets/styles/vendor/datepicker.scss +0 -183
  173. package/src/assets/styles/vendor/font-awesome.css +0 -2337
  174. package/src/assets/styles/vendor/fullcalendar.scss +0 -217
  175. package/src/assets/styles/vendor/index.scss +0 -8
  176. package/src/assets/styles/vendor/jquery.datatables.scss +0 -162
  177. package/src/assets/styles/vendor/perfectScrollbar.scss +0 -4
  178. package/src/assets/styles/vendor/sparkline.scss +0 -6
  179. package/src/assets/styles/vendor/themify-icons.css +0 -1081
@@ -0,0 +1,128 @@
1
+ /* ============ DROPDOWNS ============ */
2
+ .dd-wrap { position: relative; }
3
+
4
+ .dd-menu {
5
+ position: absolute;
6
+ top: calc(100% + 10px);
7
+ right: 0;
8
+ min-width: 340px;
9
+ background: var(--bg-card);
10
+ border: 1px solid var(--border);
11
+ border-radius: 12px;
12
+ box-shadow: var(--shadow-lg);
13
+ opacity: 0;
14
+ visibility: hidden;
15
+ transform: translateY(-4px);
16
+ transition: opacity 180ms ease, transform 180ms ease, visibility 180ms;
17
+ overflow: hidden;
18
+ z-index: 100;
19
+ }
20
+ .dd-wrap.is-open .dd-menu {
21
+ opacity: 1;
22
+ visibility: visible;
23
+ transform: translateY(0);
24
+ }
25
+
26
+ .dd-head {
27
+ display: flex; align-items: center; gap: 10px;
28
+ padding: 14px 18px;
29
+ border-bottom: 1px solid var(--border-soft);
30
+ font-size: 12.5px;
31
+ font-weight: 600;
32
+ color: var(--t-base);
33
+ letter-spacing: 0.01em;
34
+ }
35
+ .dd-head svg { width: 14px; height: 14px; stroke: currentColor; stroke-width: 1.8; fill: none; color: var(--t-muted); }
36
+
37
+ .dd-list { max-height: 320px; overflow-y: auto; }
38
+ .dd-list::-webkit-scrollbar { width: 4px; }
39
+ .dd-list::-webkit-scrollbar-thumb { background: var(--border); border-radius: 4px; }
40
+
41
+ .dd-item {
42
+ display: grid; grid-template-columns: 36px 1fr;
43
+ gap: 12px; align-items: center;
44
+ padding: 12px 18px;
45
+ border-bottom: 1px solid var(--border-soft);
46
+ transition: background 150ms ease;
47
+ }
48
+ .dd-item:last-child { border-bottom: 0; }
49
+ .dd-item:hover { background: var(--bg-hover); }
50
+
51
+ .dd-avatar {
52
+ width: 36px; height: 36px;
53
+ border-radius: 50%;
54
+ display: grid; place-items: center;
55
+ font-size: 12px; font-weight: 600;
56
+ color: #fff;
57
+ flex-shrink: 0;
58
+ }
59
+ .dd-avatar.a1 { background: linear-gradient(135deg, var(--primary), var(--purple)); }
60
+ .dd-avatar.a2 { background: linear-gradient(135deg, var(--success), var(--teal)); }
61
+ .dd-avatar.a3 { background: linear-gradient(135deg, var(--danger), var(--warning)); }
62
+
63
+ .dd-body { min-width: 0; }
64
+ .dd-text {
65
+ font-size: 13px;
66
+ color: var(--t-muted);
67
+ line-height: 1.4;
68
+ margin-bottom: 3px;
69
+ }
70
+ .dd-text strong { color: var(--t-base); font-weight: 600; }
71
+ .dd-text em { color: var(--primary); font-style: normal; }
72
+ .dd-preview {
73
+ font-size: 12.5px;
74
+ color: var(--t-muted);
75
+ line-height: 1.45;
76
+ overflow: hidden;
77
+ text-overflow: ellipsis;
78
+ display: -webkit-box;
79
+ -webkit-line-clamp: 2;
80
+ -webkit-box-orient: vertical;
81
+ margin-top: 2px;
82
+ }
83
+ .dd-row-head {
84
+ display: flex; justify-content: space-between; align-items: baseline;
85
+ gap: 8px;
86
+ }
87
+ .dd-row-head strong { font-size: 13px; color: var(--t-base); font-weight: 600; }
88
+ .dd-time {
89
+ font-family: 'JetBrains Mono', monospace;
90
+ font-size: 10px;
91
+ color: var(--t-light);
92
+ letter-spacing: 0.04em;
93
+ flex-shrink: 0;
94
+ }
95
+
96
+ .dd-footer {
97
+ display: block;
98
+ padding: 12px 18px;
99
+ text-align: center;
100
+ font-size: 12.5px;
101
+ color: var(--primary);
102
+ font-weight: 600;
103
+ border-top: 1px solid var(--border-soft);
104
+ transition: color 180ms, background 180ms;
105
+ }
106
+ .dd-footer:hover { color: var(--primary-dark); background: var(--bg-hover); }
107
+
108
+ /* Profile menu variant */
109
+ .dd-menu.dd-profile { min-width: 220px; }
110
+ .dd-menu-item {
111
+ display: flex; align-items: center; gap: 12px;
112
+ padding: 10px 18px;
113
+ font-size: 13px;
114
+ color: var(--t-base);
115
+ transition: background 150ms, color 150ms;
116
+ }
117
+ .dd-menu-item:hover { background: var(--bg-hover); }
118
+ .dd-menu-item svg { width: 15px; height: 15px; stroke: currentColor; stroke-width: 1.75; fill: none; color: var(--t-muted); }
119
+ .dd-menu-item.danger { color: var(--danger); }
120
+ .dd-menu-item.danger svg { color: var(--danger); }
121
+ .dd-menu-item.danger:hover { background: var(--danger-soft); }
122
+ .dd-divider { height: 1px; background: var(--border-soft); margin: 6px 0; }
123
+ .dd-profile-head {
124
+ padding: 14px 18px;
125
+ border-bottom: 1px solid var(--border-soft);
126
+ }
127
+ .dd-profile-name { font-size: 13px; font-weight: 600; color: var(--t-base); }
128
+ .dd-profile-email { font-size: 11.5px; color: var(--t-muted); margin-top: 2px; font-family: 'JetBrains Mono', monospace; letter-spacing: 0.02em; }
@@ -0,0 +1,599 @@
1
+ /* ============ EMAIL — 3-pane layout ============ */
2
+ .mail-hero {
3
+ display: flex; justify-content: space-between; align-items: flex-end;
4
+ gap: 24px; margin-bottom: 20px;
5
+ animation: rise-in 600ms cubic-bezier(.2,.7,.2,1) both;
6
+ }
7
+ .mail-hero .hero-title { font-size: clamp(24px, 2.4vw, 28px); margin-bottom: 6px; }
8
+ .mail-hero .hero-sub { font-size: 13.5px; }
9
+
10
+ .mail-shell {
11
+ display: grid;
12
+ grid-template-columns: 220px minmax(320px, 1fr) minmax(0, 1.4fr);
13
+ gap: 20px;
14
+ background: var(--bg-card);
15
+ border: 1px solid var(--border);
16
+ border-radius: 14px;
17
+ box-shadow: var(--shadow-card);
18
+ overflow: hidden;
19
+ height: calc(100vh - 240px);
20
+ min-height: 560px;
21
+ animation: rise-in 600ms cubic-bezier(.2,.7,.2,1) both;
22
+ animation-delay: 80ms;
23
+ }
24
+
25
+ /* ---- Folder rail ---- */
26
+ .mail-rail {
27
+ display: flex; flex-direction: column;
28
+ padding: 18px 14px;
29
+ border-right: 1px solid var(--border-soft);
30
+ background: var(--bg-card);
31
+ overflow-y: auto;
32
+ gap: 18px;
33
+ }
34
+ .mail-rail::-webkit-scrollbar { width: 4px; }
35
+ .mail-rail::-webkit-scrollbar-thumb { background: var(--border); border-radius: 4px; }
36
+
37
+ .mail-compose {
38
+ display: inline-flex; align-items: center; justify-content: center; gap: 8px;
39
+ background: var(--primary); color: #fff;
40
+ padding: 11px 14px;
41
+ border-radius: 9px;
42
+ font-size: 13px; font-weight: 600;
43
+ box-shadow: 0 2px 6px -1px var(--primary-ring);
44
+ transition: background 180ms;
45
+ }
46
+ .mail-compose:hover { background: var(--primary-dark); }
47
+ .mail-compose svg { width: 14px; height: 14px; stroke: currentColor; stroke-width: 2; fill: none; }
48
+
49
+ .mail-rail-section { display: flex; flex-direction: column; gap: 1px; }
50
+ .mail-rail-label {
51
+ font-family: 'JetBrains Mono', monospace;
52
+ font-size: 10px;
53
+ letter-spacing: 0.2em;
54
+ text-transform: uppercase;
55
+ color: var(--t-light);
56
+ padding: 0 10px 8px;
57
+ }
58
+
59
+ .mail-folder {
60
+ display: flex; align-items: center; gap: 10px;
61
+ padding: 8px 10px;
62
+ border-radius: 8px;
63
+ color: var(--t-muted);
64
+ font-size: 13px;
65
+ font-weight: 500;
66
+ transition: background 160ms ease, color 160ms ease;
67
+ cursor: pointer;
68
+ }
69
+ .mail-folder svg {
70
+ width: 15px; height: 15px;
71
+ stroke: currentColor; stroke-width: 1.75; fill: none;
72
+ flex-shrink: 0;
73
+ }
74
+ .mail-folder:hover { background: var(--bg-hover); color: var(--t-base); }
75
+ .mail-folder.is-active {
76
+ background: var(--primary-soft);
77
+ color: var(--primary);
78
+ font-weight: 600;
79
+ }
80
+ .mail-folder-name { flex: 1; min-width: 0; }
81
+ .mail-folder-count {
82
+ font-family: 'JetBrains Mono', monospace;
83
+ font-size: 10.5px;
84
+ color: var(--t-light);
85
+ font-weight: 500;
86
+ }
87
+ .mail-folder.is-active .mail-folder-count { color: var(--primary); }
88
+ .mail-folder-count.is-strong {
89
+ background: var(--primary);
90
+ color: #fff;
91
+ padding: 2px 7px;
92
+ border-radius: 999px;
93
+ font-size: 10px;
94
+ }
95
+ .mail-folder.is-active .mail-folder-count.is-strong { background: var(--primary); color: #fff; }
96
+
97
+ .mail-label-dot {
98
+ width: 8px; height: 8px;
99
+ border-radius: 50%;
100
+ flex-shrink: 0;
101
+ }
102
+
103
+ .mail-rail-storage {
104
+ margin-top: auto;
105
+ padding: 14px 10px 4px;
106
+ border-top: 1px solid var(--border-soft);
107
+ }
108
+ .mail-storage-head {
109
+ display: flex; justify-content: space-between; align-items: center;
110
+ font-size: 11.5px; color: var(--t-muted); font-weight: 500;
111
+ margin-bottom: 8px;
112
+ }
113
+ .mail-storage-head .num {
114
+ font-family: 'JetBrains Mono', monospace;
115
+ font-size: 10.5px;
116
+ color: var(--t-light);
117
+ letter-spacing: 0.04em;
118
+ }
119
+ .mail-storage-bar {
120
+ height: 4px;
121
+ background: var(--bg-muted);
122
+ border-radius: 99px;
123
+ overflow: hidden;
124
+ }
125
+ .mail-storage-bar-fill {
126
+ height: 100%;
127
+ background: linear-gradient(90deg, var(--primary), var(--purple));
128
+ border-radius: 99px;
129
+ animation: bar-in 900ms cubic-bezier(.2,.7,.2,1) 300ms both;
130
+ transform-origin: left;
131
+ }
132
+ .mail-storage-foot {
133
+ font-size: 11px;
134
+ color: var(--t-light);
135
+ margin-top: 6px;
136
+ }
137
+ .mail-storage-foot a { color: var(--primary); font-weight: 600; }
138
+
139
+ /* ---- Message list ---- */
140
+ .mail-list {
141
+ display: flex; flex-direction: column;
142
+ border-right: 1px solid var(--border-soft);
143
+ background: var(--bg-card);
144
+ min-width: 0;
145
+ overflow: hidden;
146
+ }
147
+ .mail-list-head {
148
+ padding: 14px 16px;
149
+ border-bottom: 1px solid var(--border-soft);
150
+ display: flex; flex-direction: column; gap: 12px;
151
+ }
152
+ .mail-list-toptools {
153
+ display: flex; align-items: center; justify-content: space-between;
154
+ gap: 10px;
155
+ }
156
+ .mail-list-title {
157
+ font-family: 'Inter Tight', sans-serif;
158
+ font-weight: 700;
159
+ font-size: 15px;
160
+ color: var(--t-base);
161
+ letter-spacing: -0.018em;
162
+ }
163
+ .mail-list-title .meta {
164
+ font-family: 'JetBrains Mono', monospace;
165
+ font-size: 10.5px;
166
+ color: var(--t-light);
167
+ font-weight: 500;
168
+ margin-left: 8px;
169
+ letter-spacing: 0.04em;
170
+ }
171
+ .mail-list-tools { display: flex; gap: 2px; }
172
+ .mail-tool {
173
+ width: 28px; height: 28px;
174
+ display: grid; place-items: center;
175
+ border-radius: 7px;
176
+ color: var(--t-muted);
177
+ transition: background 160ms, color 160ms;
178
+ }
179
+ .mail-tool:hover { background: var(--bg-hover); color: var(--t-base); }
180
+ .mail-tool svg { width: 14px; height: 14px; stroke: currentColor; stroke-width: 1.8; fill: none; }
181
+
182
+ .mail-search {
183
+ position: relative;
184
+ }
185
+ .mail-search input {
186
+ width: 100%;
187
+ padding: 8px 10px 8px 32px;
188
+ border: 1px solid var(--border);
189
+ border-radius: 8px;
190
+ background: var(--bg-muted);
191
+ font-size: 12.5px;
192
+ color: var(--t-base);
193
+ outline: 0;
194
+ transition: border-color 180ms, box-shadow 180ms, background 180ms;
195
+ }
196
+ .mail-search input::placeholder { color: var(--t-light); }
197
+ .mail-search input:focus {
198
+ border-color: var(--primary);
199
+ background: var(--bg-card);
200
+ box-shadow: 0 0 0 3px var(--primary-soft);
201
+ }
202
+ .mail-search svg {
203
+ position: absolute;
204
+ left: 10px; top: 50%; transform: translateY(-50%);
205
+ width: 13px; height: 13px;
206
+ stroke: var(--t-light); stroke-width: 2; fill: none;
207
+ pointer-events: none;
208
+ }
209
+
210
+ .mail-tabs {
211
+ display: flex;
212
+ gap: 4px;
213
+ padding: 0 16px;
214
+ border-bottom: 1px solid var(--border-soft);
215
+ background: var(--bg-card);
216
+ }
217
+ .mail-tab {
218
+ padding: 10px 4px;
219
+ margin-right: 14px;
220
+ font-size: 12px;
221
+ color: var(--t-muted);
222
+ font-weight: 500;
223
+ border-bottom: 2px solid transparent;
224
+ transition: color 160ms, border-color 160ms;
225
+ position: relative;
226
+ top: 1px;
227
+ }
228
+ .mail-tab:hover { color: var(--t-base); }
229
+ .mail-tab.is-active {
230
+ color: var(--primary);
231
+ border-bottom-color: var(--primary);
232
+ font-weight: 600;
233
+ }
234
+ .mail-tab .num {
235
+ font-family: 'JetBrains Mono', monospace;
236
+ font-size: 10px;
237
+ color: var(--t-light);
238
+ margin-left: 4px;
239
+ letter-spacing: 0.04em;
240
+ }
241
+ .mail-tab.is-active .num { color: var(--primary); }
242
+
243
+ .mail-list-scroll {
244
+ flex: 1;
245
+ overflow-y: auto;
246
+ padding: 4px 0;
247
+ }
248
+ .mail-list-scroll::-webkit-scrollbar { width: 4px; }
249
+ .mail-list-scroll::-webkit-scrollbar-thumb { background: var(--border); border-radius: 4px; }
250
+
251
+ .mail-row {
252
+ display: grid;
253
+ grid-template-columns: 36px 1fr;
254
+ gap: 10px;
255
+ padding: 12px 16px;
256
+ border-bottom: 1px solid var(--border-soft);
257
+ cursor: pointer;
258
+ transition: background 160ms ease;
259
+ position: relative;
260
+ }
261
+ .mail-row:hover { background: var(--bg-hover); }
262
+ .mail-row.is-active {
263
+ background: var(--primary-soft);
264
+ box-shadow: inset 3px 0 0 var(--primary);
265
+ }
266
+ .mail-row.is-unread::before {
267
+ content: '';
268
+ position: absolute;
269
+ left: 8px; top: 18px;
270
+ width: 5px; height: 5px;
271
+ border-radius: 50%;
272
+ background: var(--primary);
273
+ }
274
+
275
+ .mail-row-avatar {
276
+ width: 36px; height: 36px;
277
+ border-radius: 50%;
278
+ display: grid; place-items: center;
279
+ color: #fff;
280
+ font-weight: 600;
281
+ font-size: 12px;
282
+ flex-shrink: 0;
283
+ }
284
+ .ma-1 { background: linear-gradient(135deg, var(--primary), var(--purple)); }
285
+ .ma-2 { background: linear-gradient(135deg, var(--success), var(--teal)); }
286
+ .ma-3 { background: linear-gradient(135deg, var(--danger), var(--warning)); }
287
+ .ma-4 { background: linear-gradient(135deg, var(--info), var(--primary-light)); }
288
+ .ma-5 { background: linear-gradient(135deg, var(--orange), var(--pink)); }
289
+ .ma-6 { background: linear-gradient(135deg, var(--purple), var(--pink)); }
290
+
291
+ .mail-row-body { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
292
+ .mail-row-top {
293
+ display: flex; align-items: baseline; justify-content: space-between;
294
+ gap: 8px;
295
+ }
296
+ .mail-row-from {
297
+ font-size: 13px;
298
+ color: var(--t-base);
299
+ font-weight: 500;
300
+ white-space: nowrap;
301
+ overflow: hidden;
302
+ text-overflow: ellipsis;
303
+ min-width: 0;
304
+ }
305
+ .mail-row.is-unread .mail-row-from { font-weight: 700; }
306
+ .mail-row-time {
307
+ font-family: 'JetBrains Mono', monospace;
308
+ font-size: 10px;
309
+ color: var(--t-light);
310
+ letter-spacing: 0.04em;
311
+ flex-shrink: 0;
312
+ }
313
+ .mail-row.is-unread .mail-row-time { color: var(--primary); }
314
+
315
+ .mail-row-subject {
316
+ font-size: 12.5px;
317
+ color: var(--t-base);
318
+ font-weight: 500;
319
+ white-space: nowrap;
320
+ overflow: hidden;
321
+ text-overflow: ellipsis;
322
+ }
323
+ .mail-row.is-unread .mail-row-subject { font-weight: 600; }
324
+
325
+ .mail-row-preview {
326
+ font-size: 12px;
327
+ color: var(--t-muted);
328
+ white-space: nowrap;
329
+ overflow: hidden;
330
+ text-overflow: ellipsis;
331
+ }
332
+
333
+ .mail-row-tags { display: flex; gap: 5px; margin-top: 4px; flex-wrap: wrap; }
334
+ .mail-tag {
335
+ font-size: 9.5px;
336
+ font-weight: 600;
337
+ padding: 2px 7px;
338
+ border-radius: 999px;
339
+ letter-spacing: 0.04em;
340
+ text-transform: uppercase;
341
+ line-height: 1.4;
342
+ }
343
+ .mail-tag.work { background: var(--primary-soft); color: var(--primary); }
344
+ .mail-tag.team { background: var(--success-soft); color: var(--success); }
345
+ .mail-tag.finance { background: var(--purple-soft); color: var(--purple); }
346
+ .mail-tag.invoice { background: var(--warning-soft); color: var(--warning); }
347
+ .mail-tag.travel { background: var(--info-soft); color: var(--info); }
348
+ .mail-tag.attach {
349
+ background: var(--bg-muted);
350
+ color: var(--t-muted);
351
+ display: inline-flex; align-items: center; gap: 3px;
352
+ }
353
+ .mail-tag.attach svg { width: 9px; height: 9px; stroke: currentColor; stroke-width: 2.4; fill: none; }
354
+
355
+ .mail-star {
356
+ position: absolute;
357
+ right: 16px; bottom: 12px;
358
+ color: var(--t-light);
359
+ cursor: pointer;
360
+ transition: color 160ms;
361
+ }
362
+ .mail-star svg { width: 13px; height: 13px; stroke: currentColor; stroke-width: 1.8; fill: none; }
363
+ .mail-star:hover { color: var(--warning); }
364
+ .mail-star.is-on { color: var(--warning); }
365
+ .mail-star.is-on svg { fill: var(--warning); }
366
+
367
+ /* ---- Reader pane ---- */
368
+ .mail-reader {
369
+ display: flex; flex-direction: column;
370
+ background: var(--bg-card);
371
+ min-width: 0;
372
+ overflow: hidden;
373
+ }
374
+
375
+ .reader-toolbar {
376
+ display: flex; align-items: center; justify-content: space-between;
377
+ padding: 12px 22px;
378
+ border-bottom: 1px solid var(--border-soft);
379
+ gap: 10px;
380
+ }
381
+ .reader-tools-group { display: flex; gap: 2px; align-items: center; }
382
+ .reader-tools-group .sep {
383
+ width: 1px; height: 18px; background: var(--border-soft);
384
+ margin: 0 6px;
385
+ }
386
+
387
+ .reader-scroll {
388
+ flex: 1;
389
+ overflow-y: auto;
390
+ padding: 24px 28px 28px;
391
+ }
392
+ .reader-scroll::-webkit-scrollbar { width: 5px; }
393
+ .reader-scroll::-webkit-scrollbar-thumb { background: var(--border); border-radius: 4px; }
394
+
395
+ .reader-head { margin-bottom: 18px; }
396
+ .reader-subject {
397
+ font-family: 'Inter Tight', sans-serif;
398
+ font-weight: 700;
399
+ font-size: 22px;
400
+ line-height: 1.25;
401
+ letter-spacing: -0.022em;
402
+ color: var(--t-base);
403
+ margin: 0 0 10px;
404
+ }
405
+ .reader-meta-row {
406
+ display: flex; gap: 8px; align-items: center; flex-wrap: wrap;
407
+ }
408
+ .reader-meta-row .mail-tag { font-size: 10px; padding: 3px 8px; }
409
+
410
+ .reader-card {
411
+ border: 1px solid var(--border-soft);
412
+ border-radius: 12px;
413
+ overflow: hidden;
414
+ margin-bottom: 14px;
415
+ }
416
+ .reader-card-head {
417
+ display: flex; align-items: flex-start; gap: 12px;
418
+ padding: 14px 16px;
419
+ background: var(--bg-card);
420
+ border-bottom: 1px solid var(--border-soft);
421
+ }
422
+ .reader-avatar {
423
+ width: 40px; height: 40px;
424
+ border-radius: 50%;
425
+ display: grid; place-items: center;
426
+ color: #fff;
427
+ font-weight: 600;
428
+ font-size: 13px;
429
+ flex-shrink: 0;
430
+ }
431
+ .reader-from-block { flex: 1; min-width: 0; line-height: 1.3; }
432
+ .reader-from-name {
433
+ font-size: 13.5px;
434
+ color: var(--t-base);
435
+ font-weight: 600;
436
+ }
437
+ .reader-from-email {
438
+ font-family: 'JetBrains Mono', monospace;
439
+ font-size: 11px;
440
+ color: var(--t-muted);
441
+ letter-spacing: 0.02em;
442
+ }
443
+ .reader-from-meta {
444
+ font-size: 11.5px;
445
+ color: var(--t-light);
446
+ margin-top: 4px;
447
+ }
448
+ .reader-time-block {
449
+ text-align: right;
450
+ font-size: 11.5px;
451
+ color: var(--t-muted);
452
+ flex-shrink: 0;
453
+ }
454
+ .reader-time-block .mono {
455
+ font-family: 'JetBrains Mono', monospace;
456
+ color: var(--t-light);
457
+ font-size: 10.5px;
458
+ letter-spacing: 0.04em;
459
+ display: block;
460
+ margin-top: 2px;
461
+ }
462
+ .reader-actions { display: flex; gap: 4px; margin-left: 4px; }
463
+
464
+ .reader-body {
465
+ padding: 18px 16px;
466
+ font-size: 13.5px;
467
+ color: var(--t-base);
468
+ line-height: 1.65;
469
+ background: var(--bg-card);
470
+ }
471
+ .reader-body p { margin: 0 0 12px; }
472
+ .reader-body p:last-child { margin-bottom: 0; }
473
+ .reader-body strong { color: var(--t-base); font-weight: 600; }
474
+ .reader-body a { color: var(--primary); font-weight: 500; }
475
+ .reader-body ul {
476
+ margin: 0 0 12px; padding-left: 18px; list-style: disc;
477
+ }
478
+ .reader-body li { margin: 4px 0; }
479
+ .reader-quote {
480
+ margin: 14px 0 4px;
481
+ padding: 12px 14px;
482
+ border-left: 2px solid var(--border);
483
+ background: var(--bg-muted);
484
+ border-radius: 0 8px 8px 0;
485
+ font-size: 12.5px;
486
+ color: var(--t-muted);
487
+ }
488
+
489
+ .reader-attach {
490
+ padding: 14px 16px;
491
+ border-top: 1px solid var(--border-soft);
492
+ background: var(--bg-card);
493
+ }
494
+ .reader-attach-head {
495
+ display: flex; align-items: center; gap: 8px;
496
+ font-family: 'JetBrains Mono', monospace;
497
+ font-size: 10.5px;
498
+ color: var(--t-light);
499
+ letter-spacing: 0.14em;
500
+ text-transform: uppercase;
501
+ margin-bottom: 12px;
502
+ }
503
+ .reader-attach-head svg { width: 11px; height: 11px; stroke: currentColor; stroke-width: 2; fill: none; }
504
+ .reader-attach-grid {
505
+ display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
506
+ gap: 10px;
507
+ }
508
+ .reader-attach-item {
509
+ display: flex; align-items: center; gap: 10px;
510
+ padding: 10px;
511
+ border: 1px solid var(--border-soft);
512
+ border-radius: 9px;
513
+ background: var(--bg-card);
514
+ transition: border-color 160ms, box-shadow 160ms, transform 160ms;
515
+ cursor: pointer;
516
+ }
517
+ .reader-attach-item:hover {
518
+ border-color: var(--primary);
519
+ box-shadow: 0 0 0 3px var(--primary-soft);
520
+ }
521
+ .attach-ico {
522
+ width: 34px; height: 34px;
523
+ border-radius: 8px;
524
+ display: grid; place-items: center;
525
+ flex-shrink: 0;
526
+ font-family: 'JetBrains Mono', monospace;
527
+ font-size: 9.5px;
528
+ font-weight: 700;
529
+ letter-spacing: 0.04em;
530
+ color: #fff;
531
+ }
532
+ .attach-ico.pdf { background: var(--danger); }
533
+ .attach-ico.doc { background: var(--primary); }
534
+ .attach-ico.xls { background: var(--success); }
535
+ .attach-ico.img { background: var(--purple); }
536
+ .attach-ico.zip { background: var(--orange); }
537
+
538
+ .attach-meta { line-height: 1.3; min-width: 0; }
539
+ .attach-name {
540
+ font-size: 12.5px;
541
+ color: var(--t-base);
542
+ font-weight: 600;
543
+ white-space: nowrap;
544
+ overflow: hidden;
545
+ text-overflow: ellipsis;
546
+ }
547
+ .attach-size {
548
+ font-family: 'JetBrains Mono', monospace;
549
+ font-size: 10px;
550
+ color: var(--t-light);
551
+ letter-spacing: 0.04em;
552
+ }
553
+
554
+ .reader-collapsed {
555
+ padding: 12px 16px;
556
+ background: var(--bg-card);
557
+ display: flex; align-items: center; gap: 12px;
558
+ cursor: pointer;
559
+ transition: background 160ms;
560
+ }
561
+ .reader-collapsed:hover { background: var(--bg-hover); }
562
+ .reader-collapsed .reader-avatar { width: 28px; height: 28px; font-size: 11px; }
563
+ .reader-collapsed-from { font-size: 12.5px; color: var(--t-base); font-weight: 600; }
564
+ .reader-collapsed-preview {
565
+ flex: 1; min-width: 0;
566
+ font-size: 12px; color: var(--t-muted);
567
+ white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
568
+ }
569
+ .reader-collapsed-time {
570
+ font-family: 'JetBrains Mono', monospace;
571
+ font-size: 10px;
572
+ color: var(--t-light);
573
+ letter-spacing: 0.04em;
574
+ }
575
+
576
+ .reader-replybar {
577
+ display: flex; align-items: center; gap: 6px;
578
+ padding: 14px 16px;
579
+ margin-top: 8px;
580
+ border: 1px solid var(--border-soft);
581
+ border-radius: 12px;
582
+ background: var(--bg-muted);
583
+ }
584
+ .reader-replybar input {
585
+ flex: 1; background: transparent; border: 0; outline: 0;
586
+ font-size: 13px; color: var(--t-base); padding: 4px 6px;
587
+ }
588
+ .reader-replybar input::placeholder { color: var(--t-light); }
589
+ .reader-replybar .reply-send {
590
+ width: 32px; height: 32px;
591
+ display: grid; place-items: center;
592
+ border-radius: 8px;
593
+ background: var(--primary); color: #fff;
594
+ transition: background 180ms;
595
+ flex-shrink: 0;
596
+ }
597
+ .reader-replybar .reply-send:hover { background: var(--primary-dark); }
598
+ .reader-replybar .reply-send svg { width: 14px; height: 14px; stroke: currentColor; stroke-width: 2; fill: none; }
599
+