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.
 
 
 
 

601 regels
12 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.create-update {
  138. background-color: #f6fff6;
  139. }
  140. main.create-update { flex: 1 auto; padding: 1rem; }
  141. main.create-update form { flex: 1 auto; display: flex; flex-direction: column; }
  142. main.create-update form label { margin-top: 5px; }
  143. /* TODO: CSS grid this */
  144. main.create-update form label span {
  145. display: inline-block;
  146. font-weight: bold;
  147. min-width: 150px;
  148. }
  149. main.create-update form input { width: 80%; }
  150. main.create-update form textarea { flex: 1 auto; resize: none; margin-top: 1rem; }
  151. main.create-update h1 { margin: 0; }
  152. main table { border-collapse: collapse; width: 100%; border: 1px solid #eee; }
  153. main table td { white-space: nowrap; padding: 0.3rem; color: #757373;
  154. overflow: hidden;
  155. text-overflow: ellipsis;
  156. max-width: 200px;
  157. }
  158. main table tbody tr { border-bottom: 1px solid #eee; }
  159. main table td a { text-decoration: none; }
  160. main table td a:hover { text-decoration: underline; }
  161. main.message table { background-color: white; }
  162. main.message th { width: 5%;}
  163. main.message h1 { font-size: 1.2rem; padding: 0.5rem;}
  164. main.message pre,
  165. main.message iframe,
  166. main.contact .details {
  167. flex: 1 auto;
  168. padding: 1rem;
  169. margin: 0.3rem 0 0 0;
  170. background-color: white;
  171. border: 1px solid #eee;
  172. max-width: 100%;
  173. }
  174. main.message pre {
  175. white-space: pre-wrap;
  176. word-break: break-all;
  177. }
  178. main.message .message-header {
  179. display: flex;
  180. flex-direction: row;
  181. }
  182. main.message .message-header .parts {
  183. margin-left: 0.3rem;
  184. padding: 0.3rem 1rem;
  185. background: white;
  186. border-top: 1px solid #f2f2f2;
  187. }
  188. main.message .message-header .parts ul {
  189. margin-left: 1rem;
  190. }
  191. main.contact dl {
  192. display: grid;
  193. grid-template-columns: auto 1fr;
  194. grid-template-rows: 1fr;
  195. grid-gap: 1rem;
  196. }
  197. main.create-update .actions {
  198. display: flex;
  199. flex-direction: row;
  200. align-items: center;
  201. background: transparent;
  202. padding-left: 0;
  203. margin-top: 0.3rem;
  204. }
  205. main.create-update .actions button,
  206. main.create-update .actions .button-link {
  207. padding: 0.4rem 1rem 0.35rem;
  208. font-weight: bold;
  209. }
  210. main.create-update .actions > *:not(:last-child) {
  211. margin-right: 1rem;
  212. }
  213. .actions h3 {
  214. align-self: center;
  215. margin: 0 1.3rem 0 1rem;
  216. }
  217. .message-list-subject a { color: #77c; }
  218. .message-list-unread.message-list-sender,
  219. .message-list-unread.message-list-subject,
  220. .message-list-unread.message-list-date { font-weight: bold; }
  221. .message-list-unread.message-list-sender,
  222. .message-list-unread.message-list-date { color: black;}
  223. .message-list-date {
  224. text-align: right;
  225. }
  226. .message-list-unread.message-list-subject a { color: #00c; }
  227. .message-list-unread {
  228. background-color: white;
  229. opacity: 1;
  230. }
  231. .message-list-unread:nth-child(4n+1) {
  232. border-left: 1px solid #f2f2f2;
  233. }
  234. .message-list-unread:nth-child(4n+4) {
  235. border-right: 1px solid #f2f2f2;
  236. }
  237. aside .new {
  238. color: #008d47;
  239. font-weight: bold;
  240. /*background-color: #f5fcf2;*/
  241. text-decoration: none;
  242. }
  243. main table th {
  244. text-align: left;
  245. padding: 0.3rem; font-weight: normal;
  246. }
  247. main table thead {
  248. border-bottom: 1px solid #e0e0e0;
  249. background-color: white;
  250. }
  251. main table tfoot {
  252. border-top: 1px solid #e0e0e0;
  253. background-color: white;
  254. }
  255. .message-list,
  256. .contact-list {
  257. display: flex;
  258. }
  259. .message-list section {
  260. width: 100%;
  261. }
  262. .actions {
  263. display: flex;
  264. flex-direction: row;
  265. background-color: white;
  266. padding: 0.3rem;
  267. }
  268. .message-list .actions:first-child,
  269. .contact-list .actions:first-child {
  270. border-bottom: 1px solid #e0e0e0;
  271. }
  272. .message-list .actions:last-child,
  273. .contact-list .actions:last-child {
  274. border-top: 1px solid #e0e0e0;
  275. }
  276. .actions input[type="text"] {
  277. flex: 1;
  278. margin: 0;
  279. }
  280. .actions input[type="text"] + button {
  281. margin-left: -4rem;
  282. width: 4rem;
  283. border-top-left-radius: 0;
  284. border-bottom-left-radius: 0;
  285. }
  286. .actions-wrap {
  287. display: flex;
  288. flex-grow: 1;
  289. flex-direction: row;
  290. }
  291. .actions-search {
  292. display: flex;
  293. flex-direction: row;
  294. flex-grow: 1;
  295. }
  296. .actions-pagination {
  297. margin-left: 1rem;
  298. display: flex;
  299. flex-direction: row;
  300. }
  301. .actions-pagination .button-link {
  302. padding: 0.3rem 0.5rem;
  303. }
  304. .actions-pagination .button-link:not(:last-child) {
  305. margin-right: 0.3rem;
  306. }
  307. .action-group:not(:last-child) {
  308. margin-bottom: 1rem;
  309. }
  310. .actions-wrap .action-group {
  311. margin-left: 0.3rem;
  312. margin-bottom: 0;
  313. }
  314. .action-group.grow {
  315. flex-grow: 1;
  316. }
  317. .action-group label,
  318. .action-group input {
  319. display: block;
  320. width: 100%;
  321. }
  322. .action-group .checkbox input {
  323. display: inline;
  324. width: 1rem;
  325. float: left;
  326. }
  327. .actions-message,
  328. .actions-contacts {
  329. display: flex;
  330. flex-direction: row;
  331. flex-grow: 1;
  332. align-items: center;
  333. }
  334. .message-list-checkbox,
  335. .contact-list-checkbox {
  336. align-self: center;
  337. }
  338. .message-list .messages,
  339. .contact-list .contacts {
  340. flex-grow: 1;
  341. }
  342. .message-grid {
  343. display: grid;
  344. grid-template-columns: auto 1fr 10fr auto;
  345. grid-template-rows: auto;
  346. }
  347. .contact-grid {
  348. display: grid;
  349. grid-template-columns: auto 1fr 3fr;
  350. grid-template-rows: auto;
  351. }
  352. .message-list .messages .message-grid > *,
  353. .contact-list .contacts .contact-grid > * {
  354. white-space: nowrap;
  355. padding: 0.3rem;
  356. overflow: hidden;
  357. text-overflow: ellipsis;
  358. }
  359. .followups a:not(:first-child) {
  360. margin-left: 0.3rem;
  361. }
  362. .empty-list {
  363. text-align: center;
  364. grid-column-start: 1;
  365. grid-column-end: 10;
  366. font-size: 1.1rem;
  367. color: #333;
  368. margin-top: 1rem;
  369. }
  370. main.calendar .dates {
  371. flex-grow: 1;
  372. padding: 0.3rem;
  373. display: grid;
  374. grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
  375. grid-template-rows: auto 1fr 1fr 1fr 1fr 1fr 1fr auto;
  376. grid-template-areas:
  377. "sunday-top monday-top wednesday-top tuesday-top thursday-top friday-top saturday-top"
  378. "dates dates dates dates dates dates dates"
  379. "dates dates dates dates dates dates dates"
  380. "dates dates dates dates dates dates dates"
  381. "dates dates dates dates dates dates dates"
  382. "dates dates dates dates dates dates dates"
  383. "dates dates dates dates dates dates dates"
  384. "sunday-bottom monday-bottom wednesday-bottom tuesday-bottom thursday-bottom friday-bottom saturday-bottom";
  385. grid-gap: 0.3rem;
  386. }
  387. main.calendar .dates .weekday {
  388. text-align: center;
  389. font-size: 1.1rem;
  390. font-weight: normal;
  391. }
  392. main.calendar .dates .sunday-top { grid-area: sunday-top; }
  393. main.calendar .dates .monday-top { grid-area: monday-top; }
  394. main.calendar .dates .tuesday-top { grid-area: tuesday-top; }
  395. main.calendar .dates .wednesday-top { grid-area: wednesday-top; }
  396. main.calendar .dates .thursday-top { grid-area: thursday-top; }
  397. main.calendar .dates .friday-top { grid-area: friday-top; }
  398. main.calendar .dates .saturday-top { grid-area: saturday-top; }
  399. main.calendar .dates .sunday-bottom { grid-area: sunday-bottom; }
  400. main.calendar .dates .monday-bottom { grid-area: monday-bottom; }
  401. main.calendar .dates .tuesday-bottom { grid-area: tuesday-bottom; }
  402. main.calendar .dates .wednesday-bottom { grid-area: wednesday-bottom; }
  403. main.calendar .dates .thursday-bottom { grid-area: thursday-bottom; }
  404. main.calendar .dates .friday-bottom { grid-area: friday-bottom; }
  405. main.calendar .dates .saturday-bottom { grid-area: saturday-bottom; }
  406. main.calendar .date {
  407. border: 1px solid #eee;
  408. padding: 0.3rem;
  409. background: white;
  410. display: flex;
  411. flex-direction: column;
  412. position: relative;
  413. }
  414. main.calendar .date.active {
  415. background-color: #f6fff6;
  416. border: 1px solid #afa;
  417. }
  418. main.calendar .date .date-link {
  419. position: absolute;
  420. top: 0; right: 0; bottom: 0; left: 0;
  421. }
  422. main.calendar .date.extra {
  423. background: transparent;
  424. border: none;
  425. }
  426. main.calendar .date ul {
  427. list-style: none;
  428. margin: 0;
  429. padding-left: 0.3rem;
  430. }
  431. main.calendar .date .events {
  432. flex-grow: 1;
  433. }
  434. main.calendar .date.extra .events {
  435. visibility: hidden;
  436. }
  437. main.calendar .events .start-time {
  438. color: #444;
  439. }
  440. main.calendar .events .overflow {
  441. color: #444;
  442. text-align: right;
  443. }
  444. main.calendar .date h4 {
  445. font-weight: normal;
  446. text-align: right;
  447. color: #666;
  448. }
  449. main.calendar .date h4 .da { font-size: 1.2rem; }
  450. main.settings form {
  451. max-width: 600px;
  452. }
  453. main.settings button {
  454. background-color: white;
  455. }
  456. main.settings button:hover {
  457. background-color: #f8f8f8;
  458. }
  459. input[type="submit"],
  460. .button,
  461. button,
  462. .button-link {
  463. margin: 0;
  464. cursor: pointer;
  465. text-decoration: none;
  466. text-align: center;
  467. display: inline-block;
  468. /*padding: 0.4rem 0.4rem 0.35rem;*/
  469. padding: 0.3rem 0.3rem 0.25rem;
  470. min-width: 1rem;
  471. font-size: 12px;
  472. border: 1px solid #ddd;
  473. border-radius: 3px;
  474. vertical-align: middle;
  475. color: #000;
  476. }
  477. .button-link {
  478. border: 1px solid transparent;
  479. text-decoration: none;
  480. }
  481. .button-link:hover {
  482. text-decoration: underline;
  483. }
  484. input[type="submit"],
  485. .button,
  486. button,
  487. .button-link {
  488. background-color: #f5f5f5;
  489. border: 1px solid #ddd;
  490. color: black;
  491. }
  492. .button:hover,
  493. button:hover,
  494. .button-link:hover {
  495. background-color: white;
  496. text-decoration: none;
  497. }
  498. .button:active,
  499. button:active,
  500. .button-link:active {
  501. color: #ccc;
  502. background-color: #f8f8f8;
  503. }