A webmail client. Forked from https://git.sr.ht/~migadu/alps
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

464 line
8.5 KiB

  1. /* Box sizing rules */
  2. *,
  3. *::before,
  4. *::after {
  5. box-sizing: border-box;
  6. }
  7. /* Remove default padding */
  8. ul[class],
  9. ol[class] {
  10. padding: 0;
  11. }
  12. /* Remove default margin */
  13. body,
  14. h1,
  15. h2,
  16. h3,
  17. h4,
  18. p,
  19. ul[class],
  20. ol[class],
  21. li,
  22. figure,
  23. figcaption,
  24. blockquote,
  25. dl,
  26. dd {
  27. margin: 0;
  28. }
  29. /* Set core body defaults */
  30. body {
  31. min-height: 100vh;
  32. scroll-behavior: smooth;
  33. text-rendering: optimizeSpeed;
  34. line-height: 1.5;
  35. }
  36. /* Remove list styles on ul, ol elements with a class attribute */
  37. ul[class],
  38. ol[class] {
  39. list-style: none;
  40. }
  41. /* A elements that don't have a class get default styles */
  42. a:not([class]) {
  43. text-decoration-skip-ink: auto;
  44. }
  45. /* Make images easier to work with */
  46. img {
  47. max-width: 100%;
  48. display: block;
  49. }
  50. /* Natural flow and rhythm in articles by default */
  51. article > * + * {
  52. margin-top: 1em;
  53. }
  54. /* Inherit fonts for inputs and buttons */
  55. input,
  56. button,
  57. textarea,
  58. select {
  59. font: inherit;
  60. }
  61. /* Remove all animations and transitions for people that prefer not to see them */
  62. @media (prefers-reduced-motion: reduce) {
  63. * {
  64. animation-duration: 0.01ms !important;
  65. animation-iteration-count: 1 !important;
  66. transition-duration: 0.01ms !important;
  67. scroll-behavior: auto !important;
  68. }
  69. }
  70. /** { box-sizing: content-box; }*/
  71. body { font-family: arial,sans-serif; font-size: 13px; padding: 0; margin: 0;
  72. min-width: 1024px; min-height: 100vh; display: flex; flex-direction: column;
  73. }
  74. input[type="text"],
  75. input[type="email"],
  76. input[type="password"],
  77. input[type="file"],
  78. textarea {
  79. margin: 0;
  80. border: none;
  81. border: 1px solid #e0e0e0;
  82. box-shadow: inset 1px 1px 0 #f8f8f8;
  83. border-radius: 2px;
  84. font-size: 13px;
  85. padding: 0.3rem 0.5rem 0.3rem 0.5rem;
  86. background-color: white;
  87. }
  88. .page-wrap {
  89. display: flex;
  90. flex: 1 100%;
  91. flex-direction: row;
  92. }
  93. a { color: #15c; }
  94. button { font-size: 1rem; }
  95. header { border-bottom: 1px solid #e0e0e0;}
  96. header nav,
  97. footer { padding: 0.5rem 1rem 0.5rem 0.5rem; }
  98. header nav { min-height: 1rem; }
  99. /*header nav strong { color: #555; }*/
  100. header nav > a { margin-right: 1rem; }
  101. header nav span { color: #757373; }
  102. header nav div { float: right; }
  103. header nav div > a{ margin-left: 1rem; }
  104. header a.active { font-weight: bold; color: black; text-decoration: none; }
  105. footer { text-align: right; }
  106. .actions { padding: 0.5rem; }
  107. .container { flex: 1 auto; display: flex; flex-direction: column; flex-wrap: nowrap; min-width: 0; }
  108. aside { flex: 0 0 180px; }
  109. aside a { width: 100%; display: block; padding: 0.4rem 0 0.4rem 0.5rem; }
  110. aside a.active { font-weight: bold; color: black; text-decoration: none; }
  111. aside img { display: block; }
  112. main {
  113. flex: 1 100%;
  114. display: flex;
  115. flex-direction: column;
  116. padding: 0.5rem 1rem 0.5rem 0.5rem;
  117. min-width: 0;
  118. background-color: #f6f6f6;
  119. }
  120. main.login {
  121. justify-content: center;
  122. }
  123. main.login > section {
  124. align-self: center;
  125. background: white;
  126. min-width: 20rem;
  127. padding: 1rem;
  128. }
  129. aside a.active,
  130. aside a.new.active {
  131. background-color: #f6f6f6;
  132. }
  133. aside a.new.active {
  134. color: #008d47;
  135. }
  136. aside a.new.active,
  137. main.compose {
  138. background-color: #f6fff6;
  139. }
  140. main.compose { flex: 1 auto; padding: 1rem; }
  141. main.compose form { flex: 1 auto; display: flex; flex-direction: column; }
  142. main.compose form label { margin-top: 5px; }
  143. main.compose form label span { display: inline-block; font-weight: bold; min-width: 100px; }
  144. main.compose form input { width: 80%; }
  145. main.compose form textarea { flex: 1 auto; resize: none; margin-top: 1rem; }
  146. main table { border-collapse: collapse; width: 100%; border: 1px solid #eee; }
  147. main table td { white-space: nowrap; padding: 0.3rem; color: #757373;
  148. overflow: hidden;
  149. text-overflow: ellipsis;
  150. max-width: 200px;
  151. }
  152. main table tbody tr { border-bottom: 1px solid #eee; }
  153. main table td a { text-decoration: none; }
  154. main table td a:hover { text-decoration: underline; }
  155. main.message table { background-color: white; }
  156. main.message th { width: 5%;}
  157. main.message h1 { font-size: 1.2rem; padding: 0.5rem;}
  158. main.message pre,
  159. main.message iframe {
  160. flex: 1 auto;
  161. padding: 1rem;
  162. margin: 0.3rem 0 0 0;
  163. background-color: white;
  164. border: 1px solid #eee;
  165. max-width: 100%;
  166. }
  167. main.message pre {
  168. white-space: pre-wrap;
  169. word-break: break-all;
  170. }
  171. main.message .message-header {
  172. display: flex;
  173. flex-direction: row;
  174. }
  175. main.message .message-header .parts {
  176. margin-left: 0.3rem;
  177. padding: 0.3rem 1rem;
  178. background: white;
  179. border-top: 1px solid #f2f2f2;
  180. }
  181. main.message .message-header .parts ul {
  182. margin-left: 1rem;
  183. }
  184. main.compose .actions {
  185. display: flex;
  186. flex-direction: row;
  187. align-items: center;
  188. }
  189. main.compose .actions button,
  190. main.compose .actions .button-link {
  191. padding: 0.4rem 1rem 0.35rem;
  192. font-weight: bold;
  193. }
  194. main.compose .actions > *:not(:last-child) {
  195. margin-right: 1rem;
  196. }
  197. .message-list-subject a { color: #77c; }
  198. .message-list-unread.message-list-sender,
  199. .message-list-unread.message-list-subject,
  200. .message-list-unread.message-list-date { font-weight: bold; }
  201. .message-list-unread.message-list-sender,
  202. .message-list-unread.message-list-date { color: black;}
  203. .message-list-date {
  204. text-align: right;
  205. }
  206. .message-list-unread.message-list-subject a { color: #00c; }
  207. .message-list-unread {
  208. background-color: white;
  209. opacity: 1;
  210. }
  211. .message-list-unread:nth-child(4n+1) {
  212. border-left: 1px solid #f2f2f2;
  213. }
  214. .message-list-unread:nth-child(4n+4) {
  215. border-right: 1px solid #f2f2f2;
  216. }
  217. aside .new {
  218. color: #008d47;
  219. font-weight: bold;
  220. /*background-color: #f5fcf2;*/
  221. text-decoration: none;
  222. }
  223. main table th {
  224. text-align: left;
  225. padding: 0.3rem; font-weight: normal;
  226. }
  227. main table thead {
  228. border-bottom: 1px solid #e0e0e0;
  229. background-color: white;
  230. }
  231. main table tfoot {
  232. border-top: 1px solid #e0e0e0;
  233. background-color: white;
  234. }
  235. .message-list,
  236. .contact-list {
  237. display: flex;
  238. }
  239. .message-list section {
  240. width: 100%;
  241. }
  242. .actions {
  243. display: flex;
  244. flex-direction: row;
  245. background-color: white;
  246. padding: 0.3rem;
  247. }
  248. .message-list .actions:first-child,
  249. .contact-list .actions:first-child {
  250. border-bottom: 1px solid #e0e0e0;
  251. }
  252. .message-list .actions:last-child,
  253. .contact-list .actions:last-child {
  254. border-top: 1px solid #e0e0e0;
  255. }
  256. .actions input[type="text"] {
  257. flex: 1;
  258. margin: 0;
  259. }
  260. .actions input[type="text"] + button {
  261. margin-left: -4rem;
  262. width: 4rem;
  263. border-top-left-radius: 0;
  264. border-bottom-left-radius: 0;
  265. }
  266. .actions-wrap {
  267. display: flex;
  268. flex-grow: 1;
  269. flex-direction: row;
  270. }
  271. .actions-search {
  272. display: flex;
  273. flex-direction: row;
  274. flex-grow: 1;
  275. }
  276. .actions-pagination {
  277. margin-left: 1rem;
  278. display: flex;
  279. flex-direction: row;
  280. }
  281. .actions-pagination .button-link {
  282. padding: 0.3rem 0.5rem;
  283. }
  284. .actions-pagination .button-link:first-child:not(:last-child) {
  285. margin-right: 0.3rem;
  286. }
  287. .action-group:not(:last-child) {
  288. margin-bottom: 1rem;
  289. }
  290. .actions-wrap .action-group {
  291. margin-left: 0.3rem;
  292. margin-bottom: 0;
  293. }
  294. .action-group.grow {
  295. flex-grow: 1;
  296. }
  297. .action-group label,
  298. .action-group input {
  299. display: block;
  300. width: 100%;
  301. }
  302. .actions-message,
  303. .actions-contacts {
  304. display: flex;
  305. flex-direction: row;
  306. flex-grow: 1;
  307. align-items: center;
  308. }
  309. .message-list-checkbox,
  310. .contact-list-checkbox {
  311. align-self: center;
  312. }
  313. .message-list .messages,
  314. .contact-list .contacts {
  315. flex-grow: 1;
  316. }
  317. .message-grid {
  318. display: grid;
  319. grid-template-columns: auto 1fr 10fr auto;
  320. grid-template-rows: auto;
  321. }
  322. .contact-grid {
  323. display: grid;
  324. grid-template-columns: auto 1fr 3fr;
  325. grid-template-rows: auto;
  326. }
  327. .message-list .messages .message-grid > *,
  328. .contact-list .contacts .contact-grid > * {
  329. white-space: nowrap;
  330. padding: 0.3rem;
  331. overflow: hidden;
  332. text-overflow: ellipsis;
  333. }
  334. .followups a:not(:first-child) {
  335. margin-left: 0.3rem;
  336. }
  337. .empty-list {
  338. text-align: center;
  339. grid-column-start: 1;
  340. grid-column-end: 10;
  341. font-size: 1.1rem;
  342. color: #333;
  343. margin-top: 1rem;
  344. }
  345. input[type="submit"],
  346. .button,
  347. button,
  348. .button-link {
  349. margin: 0;
  350. cursor: pointer;
  351. text-decoration: none;
  352. text-align: center;
  353. display: inline-block;
  354. /*padding: 0.4rem 0.4rem 0.35rem;*/
  355. padding: 0.3rem 0.3rem 0.25rem;
  356. min-width: 1rem;
  357. font-size: 12px;
  358. border: 1px solid #ddd;
  359. border-radius: 3px;
  360. vertical-align: middle;
  361. color: #000;
  362. }
  363. .button-link {
  364. border: 1px solid transparent;
  365. text-decoration: none;
  366. }
  367. .button-link:hover {
  368. text-decoration: underline;
  369. }
  370. input[type="submit"],
  371. .button,
  372. button,
  373. .button-link {
  374. background-color: #f5f5f5;
  375. border: 1px solid #ddd;
  376. color: black;
  377. }
  378. .button:hover,
  379. button:hover,
  380. .button-link:hover {
  381. background-color: white;
  382. text-decoration: none;
  383. }
  384. .button:active,
  385. button:active,
  386. .button-link:active {
  387. color: #ccc;
  388. background-color: #f8f8f8;
  389. }