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.

1814 lines
30 KiB

  1. .app-body {
  2. -webkit-overflow-scrolling: touch;
  3. -ms-overflow-style: -ms-autohiding-scrollbar;
  4. }
  5. .animated-number {
  6. display: inline-flex;
  7. flex-direction: column;
  8. align-items: stretch;
  9. overflow: hidden;
  10. position: relative;
  11. }
  12. .link-button {
  13. display: block;
  14. font-size: 15px;
  15. line-height: 20px;
  16. color: $highlight-text-color;
  17. border: 0;
  18. background: transparent;
  19. padding: 0;
  20. cursor: pointer;
  21. text-decoration: none;
  22. &--destructive {
  23. color: $error-value-color;
  24. }
  25. &:hover,
  26. &:active {
  27. text-decoration: underline;
  28. }
  29. &:disabled {
  30. color: $ui-primary-color;
  31. cursor: default;
  32. }
  33. }
  34. .button {
  35. background-color: darken($ui-highlight-color, 3%);
  36. border: 10px none;
  37. border-radius: 4px;
  38. box-sizing: border-box;
  39. color: $primary-text-color;
  40. cursor: pointer;
  41. display: inline-block;
  42. font-family: inherit;
  43. font-size: 15px;
  44. font-weight: 500;
  45. letter-spacing: 0;
  46. line-height: 22px;
  47. overflow: hidden;
  48. padding: 7px 18px;
  49. position: relative;
  50. text-align: center;
  51. text-decoration: none;
  52. text-overflow: ellipsis;
  53. white-space: nowrap;
  54. width: auto;
  55. &:active,
  56. &:focus,
  57. &:hover {
  58. background-color: $ui-highlight-color;
  59. }
  60. &--destructive {
  61. &:active,
  62. &:focus,
  63. &:hover {
  64. background-color: $error-red;
  65. transition: none;
  66. }
  67. }
  68. &:disabled {
  69. background-color: $ui-primary-color;
  70. cursor: default;
  71. }
  72. &.button-alternative {
  73. color: $inverted-text-color;
  74. background: $ui-primary-color;
  75. &:active,
  76. &:focus,
  77. &:hover {
  78. background-color: lighten($ui-primary-color, 4%);
  79. }
  80. }
  81. &.button-alternative-2 {
  82. background: $ui-base-lighter-color;
  83. &:active,
  84. &:focus,
  85. &:hover {
  86. background-color: lighten($ui-base-lighter-color, 4%);
  87. }
  88. }
  89. &.button-secondary {
  90. font-size: 16px;
  91. line-height: 36px;
  92. height: auto;
  93. color: $darker-text-color;
  94. text-transform: none;
  95. background: transparent;
  96. padding: 6px 17px;
  97. border: 1px solid $ui-primary-color;
  98. &:active,
  99. &:focus,
  100. &:hover {
  101. border-color: lighten($ui-primary-color, 4%);
  102. color: lighten($darker-text-color, 4%);
  103. text-decoration: none;
  104. }
  105. &:disabled {
  106. opacity: 0.5;
  107. }
  108. }
  109. &.button-tertiary {
  110. background: transparent;
  111. padding: 6px 17px;
  112. color: $highlight-text-color;
  113. border: 1px solid $highlight-text-color;
  114. &:active,
  115. &:focus,
  116. &:hover {
  117. background: $ui-highlight-color;
  118. color: $primary-text-color;
  119. border: 0;
  120. padding: 7px 18px;
  121. }
  122. &:disabled {
  123. opacity: 0.5;
  124. }
  125. &.button--confirmation {
  126. color: $valid-value-color;
  127. border-color: $valid-value-color;
  128. &:active,
  129. &:focus,
  130. &:hover {
  131. background: $valid-value-color;
  132. color: $primary-text-color;
  133. }
  134. }
  135. &.button--destructive {
  136. color: $error-value-color;
  137. border-color: $error-value-color;
  138. &:active,
  139. &:focus,
  140. &:hover {
  141. background: $error-value-color;
  142. color: $primary-text-color;
  143. }
  144. }
  145. }
  146. &.button--block {
  147. display: block;
  148. width: 100%;
  149. }
  150. .layout-multiple-columns &.button--with-bell {
  151. font-size: 12px;
  152. padding: 0 8px;
  153. }
  154. }
  155. .icon-button {
  156. display: inline-block;
  157. padding: 0;
  158. color: $action-button-color;
  159. border: 0;
  160. border-radius: 4px;
  161. background: transparent;
  162. cursor: pointer;
  163. transition: all 100ms ease-in;
  164. transition-property: background-color, color;
  165. text-decoration: none;
  166. a {
  167. color: inherit;
  168. text-decoration: none;
  169. }
  170. &:hover,
  171. &:active,
  172. &:focus {
  173. color: lighten($action-button-color, 7%);
  174. background-color: rgba($action-button-color, 0.15);
  175. transition: all 200ms ease-out;
  176. transition-property: background-color, color;
  177. }
  178. &:focus {
  179. background-color: rgba($action-button-color, 0.3);
  180. }
  181. &.disabled {
  182. color: darken($action-button-color, 13%);
  183. background-color: transparent;
  184. cursor: default;
  185. }
  186. &.active {
  187. color: $highlight-text-color;
  188. }
  189. &.copyable {
  190. transition: background 300ms linear;
  191. }
  192. &.copied {
  193. background: $valid-value-color;
  194. transition: none;
  195. }
  196. &::-moz-focus-inner {
  197. border: 0;
  198. }
  199. &::-moz-focus-inner,
  200. &:focus,
  201. &:active {
  202. outline: 0 !important;
  203. }
  204. &.inverted {
  205. color: $lighter-text-color;
  206. &:hover,
  207. &:active,
  208. &:focus {
  209. color: darken($lighter-text-color, 7%);
  210. background-color: rgba($lighter-text-color, 0.15);
  211. }
  212. &:focus {
  213. background-color: rgba($lighter-text-color, 0.3);
  214. }
  215. &.disabled {
  216. color: lighten($lighter-text-color, 7%);
  217. background-color: transparent;
  218. }
  219. &.active {
  220. color: $highlight-text-color;
  221. &.disabled {
  222. color: lighten($highlight-text-color, 13%);
  223. }
  224. }
  225. }
  226. &.overlayed {
  227. box-sizing: content-box;
  228. background: rgba($base-overlay-background, 0.6);
  229. color: rgba($primary-text-color, 0.7);
  230. border-radius: 4px;
  231. padding: 2px;
  232. &:hover {
  233. background: rgba($base-overlay-background, 0.9);
  234. }
  235. }
  236. &--with-counter {
  237. display: inline-flex;
  238. align-items: center;
  239. width: auto !important;
  240. padding: 0 4px 0 2px;
  241. }
  242. &__counter {
  243. display: inline-block;
  244. width: auto;
  245. margin-left: 4px;
  246. font-size: 12px;
  247. font-weight: 500;
  248. }
  249. }
  250. .text-icon,
  251. .text-icon-button {
  252. font-weight: 600;
  253. font-size: 11px;
  254. line-height: 27px;
  255. cursor: default;
  256. }
  257. .text-icon-button {
  258. color: $lighter-text-color;
  259. border: 0;
  260. border-radius: 4px;
  261. background: transparent;
  262. cursor: pointer;
  263. padding: 0 3px;
  264. outline: 0;
  265. transition: all 100ms ease-in;
  266. transition-property: background-color, color;
  267. &:hover,
  268. &:active,
  269. &:focus {
  270. color: darken($lighter-text-color, 7%);
  271. background-color: rgba($lighter-text-color, 0.15);
  272. transition: all 200ms ease-out;
  273. transition-property: background-color, color;
  274. }
  275. &:focus {
  276. background-color: rgba($lighter-text-color, 0.3);
  277. }
  278. &.disabled {
  279. color: lighten($lighter-text-color, 20%);
  280. background-color: transparent;
  281. cursor: default;
  282. }
  283. &.active {
  284. color: $highlight-text-color;
  285. }
  286. &::-moz-focus-inner {
  287. border: 0;
  288. }
  289. &::-moz-focus-inner,
  290. &:focus,
  291. &:active {
  292. outline: 0 !important;
  293. }
  294. }
  295. body > [data-popper-placement] {
  296. z-index: 3;
  297. }
  298. .invisible {
  299. font-size: 0;
  300. line-height: 0;
  301. display: inline-block;
  302. width: 0;
  303. height: 0;
  304. position: absolute;
  305. img,
  306. svg {
  307. margin: 0 !important;
  308. border: 0 !important;
  309. padding: 0 !important;
  310. width: 0 !important;
  311. height: 0 !important;
  312. }
  313. }
  314. .ellipsis {
  315. &::after {
  316. content: '';
  317. }
  318. }
  319. .notification__favourite-icon-wrapper {
  320. left: 0;
  321. position: absolute;
  322. .fa.star-icon {
  323. color: $gold-star;
  324. }
  325. }
  326. .icon-button.star-icon.active {
  327. color: $gold-star;
  328. }
  329. .icon-button.bookmark-icon.active {
  330. color: $red-bookmark;
  331. }
  332. .no-reduce-motion .icon-button.star-icon {
  333. &.activate {
  334. & > .fa-star {
  335. animation: spring-rotate-in 1s linear;
  336. }
  337. }
  338. &.deactivate {
  339. & > .fa-star {
  340. animation: spring-rotate-out 1s linear;
  341. }
  342. }
  343. }
  344. .notification__display-name {
  345. color: inherit;
  346. font-weight: 500;
  347. text-decoration: none;
  348. &:hover {
  349. color: $primary-text-color;
  350. text-decoration: underline;
  351. }
  352. }
  353. .display-name {
  354. display: block;
  355. max-width: 100%;
  356. overflow: hidden;
  357. text-overflow: ellipsis;
  358. white-space: nowrap;
  359. a {
  360. color: inherit;
  361. text-decoration: inherit;
  362. }
  363. strong {
  364. display: block;
  365. }
  366. > a:hover {
  367. strong {
  368. text-decoration: underline;
  369. }
  370. }
  371. &.inline {
  372. padding: 0;
  373. height: 18px;
  374. font-size: 15px;
  375. line-height: 18px;
  376. text-overflow: ellipsis;
  377. white-space: nowrap;
  378. overflow: hidden;
  379. strong {
  380. display: inline;
  381. height: auto;
  382. font-size: inherit;
  383. line-height: inherit;
  384. }
  385. span {
  386. display: inline;
  387. height: auto;
  388. font-size: inherit;
  389. line-height: inherit;
  390. }
  391. }
  392. }
  393. .display-name__html {
  394. font-weight: 500;
  395. }
  396. .display-name__account {
  397. font-size: 14px;
  398. }
  399. .image-loader {
  400. position: relative;
  401. width: 100%;
  402. height: 100%;
  403. display: flex;
  404. align-items: center;
  405. justify-content: center;
  406. flex-direction: column;
  407. scrollbar-width: none; /* Firefox */
  408. -ms-overflow-style: none; /* IE 10+ */
  409. * {
  410. scrollbar-width: none; /* Firefox */
  411. -ms-overflow-style: none; /* IE 10+ */
  412. }
  413. &::-webkit-scrollbar,
  414. *::-webkit-scrollbar {
  415. width: 0;
  416. height: 0;
  417. background: transparent; /* Chrome/Safari/Webkit */
  418. }
  419. .image-loader__preview-canvas {
  420. max-width: $media-modal-media-max-width;
  421. max-height: $media-modal-media-max-height;
  422. background: url('~images/void.png') repeat;
  423. object-fit: contain;
  424. }
  425. .loading-bar__container {
  426. position: relative;
  427. }
  428. .loading-bar {
  429. position: absolute;
  430. }
  431. &.image-loader--amorphous .image-loader__preview-canvas {
  432. display: none;
  433. }
  434. }
  435. .zoomable-image {
  436. position: relative;
  437. width: 100%;
  438. height: 100%;
  439. display: flex;
  440. align-items: center;
  441. justify-content: center;
  442. img {
  443. max-width: $media-modal-media-max-width;
  444. max-height: $media-modal-media-max-height;
  445. width: auto;
  446. height: auto;
  447. object-fit: contain;
  448. }
  449. }
  450. .dropdown-animation {
  451. animation: dropdown 300ms cubic-bezier(0.1, 0.7, 0.1, 1);
  452. @keyframes dropdown {
  453. from {
  454. opacity: 0;
  455. transform: scaleX(0.85) scaleY(0.75);
  456. }
  457. to {
  458. opacity: 1;
  459. transform: scaleX(1) scaleY(1);
  460. }
  461. }
  462. &.top {
  463. transform-origin: bottom;
  464. }
  465. &.right {
  466. transform-origin: left;
  467. }
  468. &.bottom {
  469. transform-origin: top;
  470. }
  471. &.left {
  472. transform-origin: right;
  473. }
  474. .reduce-motion & {
  475. animation: none;
  476. }
  477. }
  478. .dropdown {
  479. display: inline-block;
  480. }
  481. .dropdown__content {
  482. display: none;
  483. position: absolute;
  484. }
  485. .dropdown-menu__separator {
  486. border-bottom: 1px solid darken($ui-secondary-color, 8%);
  487. margin: 5px 7px 6px;
  488. height: 0;
  489. }
  490. .dropdown-menu {
  491. background: $ui-secondary-color;
  492. padding: 4px 0;
  493. border-radius: 4px;
  494. box-shadow: 2px 4px 15px rgba($base-shadow-color, 0.4);
  495. z-index: 9999;
  496. &__text-button {
  497. display: inline;
  498. color: inherit;
  499. background: transparent;
  500. border: 0;
  501. margin: 0;
  502. padding: 0;
  503. font-family: inherit;
  504. font-size: inherit;
  505. line-height: inherit;
  506. &:focus {
  507. outline: 1px dotted;
  508. }
  509. }
  510. &__container {
  511. &__header {
  512. border-bottom: 1px solid darken($ui-secondary-color, 8%);
  513. padding: 4px 14px;
  514. padding-bottom: 8px;
  515. font-size: 13px;
  516. line-height: 18px;
  517. color: $inverted-text-color;
  518. }
  519. &__list {
  520. list-style: none;
  521. &--scrollable {
  522. max-height: 300px;
  523. overflow-y: scroll;
  524. }
  525. }
  526. &--loading {
  527. display: flex;
  528. align-items: center;
  529. justify-content: center;
  530. padding: 30px 45px;
  531. }
  532. }
  533. }
  534. .dropdown-menu__arrow {
  535. position: absolute;
  536. &::before {
  537. content: '';
  538. display: block;
  539. width: 14px;
  540. height: 5px;
  541. background-color: $ui-secondary-color;
  542. mask-image: url("data:image/svg+xml;utf8,<svg width='14' height='5' xmlns='http://www.w3.org/2000/svg'><path d='M7 0L0 5h14L7 0z' fill='white'/></svg>");
  543. }
  544. &.top {
  545. bottom: -5px;
  546. &::before {
  547. transform: rotate(180deg);
  548. }
  549. }
  550. &.right {
  551. left: -9px;
  552. &::before {
  553. transform: rotate(-90deg);
  554. }
  555. }
  556. &.bottom {
  557. top: -5px;
  558. }
  559. &.left {
  560. right: -9px;
  561. &::before {
  562. transform: rotate(90deg);
  563. }
  564. }
  565. }
  566. .dropdown-menu__item {
  567. font-size: 13px;
  568. line-height: 18px;
  569. display: block;
  570. color: $inverted-text-color;
  571. a,
  572. button {
  573. font-family: inherit;
  574. font-size: inherit;
  575. line-height: inherit;
  576. display: block;
  577. width: 100%;
  578. padding: 4px 14px;
  579. border: 0;
  580. margin: 0;
  581. box-sizing: border-box;
  582. text-decoration: none;
  583. background: $ui-secondary-color;
  584. color: inherit;
  585. overflow: hidden;
  586. text-overflow: ellipsis;
  587. white-space: nowrap;
  588. text-align: inherit;
  589. &:focus,
  590. &:hover,
  591. &:active {
  592. background: $ui-highlight-color;
  593. color: $secondary-text-color;
  594. outline: 0;
  595. }
  596. }
  597. }
  598. .dropdown-menu__item--text {
  599. overflow: hidden;
  600. text-overflow: ellipsis;
  601. white-space: nowrap;
  602. padding: 4px 14px;
  603. }
  604. .dropdown-menu__item.edited-timestamp__history__item {
  605. border-bottom: 1px solid darken($ui-secondary-color, 8%);
  606. &:last-child {
  607. border-bottom: 0;
  608. }
  609. &.dropdown-menu__item--text,
  610. a,
  611. button {
  612. padding: 8px 14px;
  613. }
  614. }
  615. .inline-account {
  616. display: inline-flex;
  617. align-items: center;
  618. vertical-align: top;
  619. .account__avatar {
  620. margin-right: 5px;
  621. border-radius: 50%;
  622. }
  623. strong {
  624. font-weight: 600;
  625. }
  626. }
  627. .dropdown--active .dropdown__content {
  628. display: block;
  629. line-height: 18px;
  630. max-width: 311px;
  631. right: 0;
  632. text-align: left;
  633. z-index: 9999;
  634. & > ul {
  635. list-style: none;
  636. background: $ui-secondary-color;
  637. padding: 4px 0;
  638. border-radius: 4px;
  639. box-shadow: 0 0 15px rgba($base-shadow-color, 0.4);
  640. min-width: 140px;
  641. position: relative;
  642. }
  643. &.dropdown__right {
  644. right: 0;
  645. }
  646. &.dropdown__left {
  647. & > ul {
  648. left: -98px;
  649. }
  650. }
  651. & > ul > li > a {
  652. font-size: 13px;
  653. line-height: 18px;
  654. display: block;
  655. padding: 4px 14px;
  656. box-sizing: border-box;
  657. text-decoration: none;
  658. background: $ui-secondary-color;
  659. color: $inverted-text-color;
  660. overflow: hidden;
  661. text-overflow: ellipsis;
  662. white-space: nowrap;
  663. &:focus {
  664. outline: 0;
  665. }
  666. &:hover {
  667. background: $ui-highlight-color;
  668. color: $secondary-text-color;
  669. }
  670. }
  671. }
  672. .dropdown__icon {
  673. vertical-align: middle;
  674. }
  675. .static-content {
  676. padding: 10px;
  677. padding-top: 20px;
  678. color: $dark-text-color;
  679. h1 {
  680. font-size: 16px;
  681. font-weight: 500;
  682. margin-bottom: 40px;
  683. text-align: center;
  684. }
  685. p {
  686. font-size: 13px;
  687. margin-bottom: 20px;
  688. }
  689. }
  690. .column,
  691. .drawer {
  692. flex: 1 1 100%;
  693. overflow: hidden;
  694. }
  695. @media screen and (min-width: 631px) {
  696. .columns-area {
  697. padding: 0;
  698. }
  699. .column,
  700. .drawer {
  701. flex: 0 0 auto;
  702. padding: 10px;
  703. padding-left: 5px;
  704. padding-right: 5px;
  705. &:first-child {
  706. padding-left: 10px;
  707. }
  708. &:last-child {
  709. padding-right: 10px;
  710. }
  711. }
  712. .columns-area > div {
  713. .column,
  714. .drawer {
  715. padding-left: 5px;
  716. padding-right: 5px;
  717. }
  718. }
  719. }
  720. .tabs-bar {
  721. box-sizing: border-box;
  722. display: flex;
  723. background: lighten($ui-base-color, 8%);
  724. flex: 0 0 auto;
  725. overflow-y: auto;
  726. }
  727. .tabs-bar__link {
  728. display: block;
  729. flex: 1 1 auto;
  730. padding: 15px 10px;
  731. padding-bottom: 13px;
  732. color: $primary-text-color;
  733. text-decoration: none;
  734. text-align: center;
  735. font-size: 14px;
  736. font-weight: 500;
  737. border-bottom: 2px solid lighten($ui-base-color, 8%);
  738. transition: all 50ms linear;
  739. transition-property: border-bottom, background, color;
  740. .fa {
  741. font-weight: 400;
  742. font-size: 16px;
  743. }
  744. &:hover,
  745. &:focus,
  746. &:active {
  747. @include multi-columns('screen and (min-width: 631px)') {
  748. background: lighten($ui-base-color, 14%);
  749. border-bottom-color: lighten($ui-base-color, 14%);
  750. }
  751. }
  752. &.active {
  753. border-bottom: 2px solid $ui-highlight-color;
  754. color: $highlight-text-color;
  755. }
  756. span {
  757. margin-left: 5px;
  758. display: none;
  759. }
  760. span.icon {
  761. margin-left: 0;
  762. display: inline;
  763. }
  764. }
  765. .icon-with-badge {
  766. position: relative;
  767. &__badge {
  768. position: absolute;
  769. left: 9px;
  770. top: -13px;
  771. background: $ui-highlight-color;
  772. border: 2px solid lighten($ui-base-color, 8%);
  773. padding: 1px 6px;
  774. border-radius: 6px;
  775. font-size: 10px;
  776. font-weight: 500;
  777. line-height: 14px;
  778. color: $primary-text-color;
  779. }
  780. &__issue-badge {
  781. position: absolute;
  782. left: 11px;
  783. bottom: 1px;
  784. display: block;
  785. background: $error-red;
  786. border-radius: 50%;
  787. width: 0.625rem;
  788. height: 0.625rem;
  789. }
  790. }
  791. .column-link--transparent .icon-with-badge__badge {
  792. border-color: darken($ui-base-color, 8%);
  793. }
  794. .scrollable {
  795. overflow-y: scroll;
  796. overflow-x: hidden;
  797. flex: 1 1 auto;
  798. -webkit-overflow-scrolling: touch;
  799. &.optionally-scrollable {
  800. overflow-y: auto;
  801. }
  802. @supports (display: grid) {
  803. // hack to fix Chrome <57
  804. contain: strict;
  805. }
  806. &--flex {
  807. display: flex;
  808. flex-direction: column;
  809. }
  810. &__append {
  811. flex: 1 1 auto;
  812. position: relative;
  813. min-height: 120px;
  814. }
  815. .scrollable {
  816. flex: 1 1 auto;
  817. }
  818. }
  819. .scrollable.fullscreen {
  820. @supports (display: grid) {
  821. // hack to fix Chrome <57
  822. contain: none;
  823. }
  824. }
  825. .react-toggle {
  826. display: inline-block;
  827. position: relative;
  828. cursor: pointer;
  829. background-color: transparent;
  830. border: 0;
  831. padding: 0;
  832. user-select: none;
  833. -webkit-tap-highlight-color: rgba($base-overlay-background, 0);
  834. -webkit-tap-highlight-color: transparent;
  835. }
  836. .react-toggle-screenreader-only {
  837. border: 0;
  838. clip: rect(0 0 0 0);
  839. height: 1px;
  840. margin: -1px;
  841. overflow: hidden;
  842. padding: 0;
  843. position: absolute;
  844. width: 1px;
  845. }
  846. .react-toggle--disabled {
  847. cursor: not-allowed;
  848. opacity: 0.5;
  849. transition: opacity 0.25s;
  850. }
  851. .react-toggle-track {
  852. width: 50px;
  853. height: 24px;
  854. padding: 0;
  855. border-radius: 30px;
  856. background-color: $ui-base-color;
  857. transition: background-color 0.2s ease;
  858. }
  859. .react-toggle:is(:hover, :focus-within):not(.react-toggle--disabled)
  860. .react-toggle-track {
  861. background-color: darken($ui-base-color, 10%);
  862. }
  863. .react-toggle--checked .react-toggle-track {
  864. background-color: darken($ui-highlight-color, 2%);
  865. }
  866. .react-toggle--checked:is(:hover, :focus-within):not(.react-toggle--disabled)
  867. .react-toggle-track {
  868. background-color: $ui-highlight-color;
  869. }
  870. .react-toggle-track-check {
  871. position: absolute;
  872. width: 14px;
  873. height: 10px;
  874. top: 0;
  875. bottom: 0;
  876. margin-top: auto;
  877. margin-bottom: auto;
  878. line-height: 0;
  879. left: 8px;
  880. opacity: 0;
  881. transition: opacity 0.25s ease;
  882. }
  883. .react-toggle--checked .react-toggle-track-check {
  884. opacity: 1;
  885. transition: opacity 0.25s ease;
  886. }
  887. .react-toggle-track-x {
  888. position: absolute;
  889. width: 10px;
  890. height: 10px;
  891. top: 0;
  892. bottom: 0;
  893. margin-top: auto;
  894. margin-bottom: auto;
  895. line-height: 0;
  896. right: 10px;
  897. opacity: 1;
  898. transition: opacity 0.25s ease;
  899. }
  900. .react-toggle--checked .react-toggle-track-x {
  901. opacity: 0;
  902. }
  903. .react-toggle-thumb {
  904. position: absolute;
  905. top: 1px;
  906. left: 1px;
  907. width: 22px;
  908. height: 22px;
  909. border: 1px solid $ui-base-color;
  910. border-radius: 50%;
  911. background-color: darken($simple-background-color, 2%);
  912. box-sizing: border-box;
  913. transition: all 0.25s ease;
  914. transition-property: border-color, left;
  915. }
  916. .react-toggle--checked .react-toggle-thumb {
  917. left: 27px;
  918. border-color: $ui-highlight-color;
  919. }
  920. .getting-started__wrapper,
  921. .getting_started,
  922. .flex-spacer {
  923. background: $ui-base-color;
  924. }
  925. .getting-started__wrapper {
  926. position: relative;
  927. overflow-y: auto;
  928. }
  929. .flex-spacer {
  930. flex: 1 1 auto;
  931. }
  932. .getting-started {
  933. background: $ui-base-color;
  934. flex: 1 0 auto;
  935. p {
  936. color: $secondary-text-color;
  937. }
  938. a {
  939. color: $dark-text-color;
  940. }
  941. &__trends {
  942. flex: 0 1 auto;
  943. opacity: 1;
  944. animation: fade 150ms linear;
  945. margin-top: 10px;
  946. h4 {
  947. border-bottom: 1px solid lighten($ui-base-color, 8%);
  948. padding: 10px;
  949. font-size: 12px;
  950. text-transform: uppercase;
  951. font-weight: 500;
  952. a {
  953. color: $darker-text-color;
  954. text-decoration: none;
  955. }
  956. }
  957. @media screen and (max-height: 810px) {
  958. .trends__item:nth-of-type(3) {
  959. display: none;
  960. }
  961. }
  962. @media screen and (max-height: 720px) {
  963. .trends__item:nth-of-type(2) {
  964. display: none;
  965. }
  966. }
  967. @media screen and (max-height: 670px) {
  968. display: none;
  969. }
  970. .trends__item {
  971. border-bottom: 0;
  972. padding: 10px;
  973. &__current {
  974. color: $darker-text-color;
  975. }
  976. }
  977. }
  978. }
  979. .column-link__badge {
  980. display: inline-block;
  981. border-radius: 4px;
  982. font-size: 12px;
  983. line-height: 19px;
  984. font-weight: 500;
  985. background: $ui-base-color;
  986. padding: 4px 8px;
  987. margin: -6px 10px;
  988. }
  989. .keyboard-shortcuts {
  990. padding: 8px 0 0;
  991. overflow: hidden;
  992. thead {
  993. position: absolute;
  994. left: -9999px;
  995. }
  996. td {
  997. padding: 0 10px 8px;
  998. }
  999. kbd {
  1000. display: inline-block;
  1001. padding: 3px 5px;
  1002. background-color: lighten($ui-base-color, 8%);
  1003. border: 1px solid darken($ui-base-color, 4%);
  1004. }
  1005. }
  1006. .setting-text {
  1007. color: $darker-text-color;
  1008. background: transparent;
  1009. border: 0;
  1010. border-bottom: 2px solid $ui-primary-color;
  1011. outline: 0;
  1012. box-sizing: border-box;
  1013. display: block;
  1014. font-family: inherit;
  1015. margin-bottom: 10px;
  1016. padding: 7px 0;
  1017. width: 100%;
  1018. &:focus,
  1019. &:active {
  1020. color: $primary-text-color;
  1021. border-bottom-color: $ui-highlight-color;
  1022. }
  1023. @include limited-single-column('screen and (max-width: 600px)') {
  1024. font-size: 16px;
  1025. }
  1026. &.light {
  1027. color: $inverted-text-color;
  1028. border-bottom: 2px solid lighten($ui-base-color, 27%);
  1029. &:focus,
  1030. &:active {
  1031. color: $inverted-text-color;
  1032. border-bottom-color: $ui-highlight-color;
  1033. }
  1034. }
  1035. }
  1036. button.icon-button i.fa-retweet {
  1037. background-position: 0 0;
  1038. height: 19px;
  1039. transition: background-position 0.9s steps(10);
  1040. transition-duration: 0s;
  1041. vertical-align: middle;
  1042. width: 22px;
  1043. &::before {
  1044. display: none !important;
  1045. }
  1046. }
  1047. button.icon-button.active i.fa-retweet {
  1048. transition-duration: 0.9s;
  1049. background-position: 0 100%;
  1050. }
  1051. .reduce-motion button.icon-button i.fa-retweet,
  1052. .reduce-motion button.icon-button.active i.fa-retweet {
  1053. transition: none;
  1054. }
  1055. .reduce-motion button.icon-button.disabled i.fa-retweet {
  1056. color: darken($action-button-color, 13%);
  1057. }
  1058. .load-more {
  1059. display: block;
  1060. color: $dark-text-color;
  1061. background-color: transparent;
  1062. border: 0;
  1063. font-size: inherit;
  1064. text-align: center;
  1065. line-height: inherit;
  1066. margin: 0;
  1067. padding: 15px;
  1068. box-sizing: border-box;
  1069. width: 100%;
  1070. clear: both;
  1071. text-decoration: none;
  1072. &:hover {
  1073. background: lighten($ui-base-color, 2%);
  1074. }
  1075. }
  1076. .load-gap {
  1077. border-bottom: 1px solid lighten($ui-base-color, 8%);
  1078. }
  1079. .timeline-hint {
  1080. text-align: center;
  1081. color: $darker-text-color;
  1082. padding: 15px;
  1083. box-sizing: border-box;
  1084. width: 100%;
  1085. cursor: default;
  1086. strong {
  1087. font-weight: 500;
  1088. }
  1089. a {
  1090. color: $highlight-text-color;
  1091. text-decoration: none;
  1092. &:hover,
  1093. &:focus,
  1094. &:active {
  1095. text-decoration: underline;
  1096. color: lighten($highlight-text-color, 4%);
  1097. }
  1098. }
  1099. }
  1100. .missing-indicator {
  1101. padding-top: 20px + 48px;
  1102. .regeneration-indicator__figure {
  1103. background-image: url('~flavours/glitch/images/elephant_ui_disappointed.svg');
  1104. }
  1105. }
  1106. .scrollable > div > :first-child .notification__dismiss-overlay > .wrappy {
  1107. border-top: 1px solid $ui-base-color;
  1108. }
  1109. .notification__dismiss-overlay {
  1110. overflow: hidden;
  1111. position: absolute;
  1112. top: 0;
  1113. right: 0;
  1114. bottom: -1px;
  1115. padding-left: 15px; // space for the box shadow to be visible
  1116. z-index: 999;
  1117. align-items: center;
  1118. justify-content: flex-end;
  1119. cursor: pointer;
  1120. display: flex;
  1121. .wrappy {
  1122. width: $dismiss-overlay-width;
  1123. align-self: stretch;
  1124. display: flex;
  1125. flex-direction: column;
  1126. align-items: center;
  1127. justify-content: center;
  1128. background: lighten($ui-base-color, 8%);
  1129. border-left: 1px solid lighten($ui-base-color, 20%);
  1130. box-shadow: 0 0 5px black;
  1131. border-bottom: 1px solid $ui-base-color;
  1132. }
  1133. .ckbox {
  1134. border: 2px solid $ui-primary-color;
  1135. border-radius: 2px;
  1136. width: 30px;
  1137. height: 30px;
  1138. font-size: 20px;
  1139. color: $darker-text-color;
  1140. text-shadow: 0 0 5px black;
  1141. display: flex;
  1142. justify-content: center;
  1143. align-items: center;
  1144. }
  1145. &:focus {
  1146. outline: 0 !important;
  1147. .ckbox {
  1148. box-shadow: 0 0 1px 1px $ui-highlight-color;
  1149. }
  1150. }
  1151. }
  1152. .text-btn {
  1153. display: inline-block;
  1154. padding: 0;
  1155. font-family: inherit;
  1156. font-size: inherit;
  1157. color: inherit;
  1158. border: 0;
  1159. background: transparent;
  1160. cursor: pointer;
  1161. }
  1162. .loading-indicator {
  1163. color: $dark-text-color;
  1164. font-size: 12px;
  1165. font-weight: 400;
  1166. text-transform: uppercase;
  1167. overflow: visible;
  1168. position: absolute;
  1169. top: 50%;
  1170. left: 50%;
  1171. transform: translate(-50%, -50%);
  1172. display: flex;
  1173. align-items: center;
  1174. justify-content: center;
  1175. }
  1176. .circular-progress {
  1177. color: lighten($ui-base-color, 26%);
  1178. animation: 1.4s linear 0s infinite normal none running simple-rotate;
  1179. circle {
  1180. stroke: currentColor;
  1181. stroke-dasharray: 80px, 200px;
  1182. stroke-dashoffset: 0;
  1183. animation: circular-progress 1.4s ease-in-out infinite;
  1184. }
  1185. }
  1186. @keyframes circular-progress {
  1187. 0% {
  1188. stroke-dasharray: 1px, 200px;
  1189. stroke-dashoffset: 0;
  1190. }
  1191. 50% {
  1192. stroke-dasharray: 100px, 200px;
  1193. stroke-dashoffset: -15px;
  1194. }
  1195. 100% {
  1196. stroke-dasharray: 100px, 200px;
  1197. stroke-dashoffset: -125px;
  1198. }
  1199. }
  1200. @keyframes simple-rotate {
  1201. 0% {
  1202. transform: rotate(0deg);
  1203. }
  1204. 100% {
  1205. transform: rotate(360deg);
  1206. }
  1207. }
  1208. @keyframes spring-rotate-in {
  1209. 0% {
  1210. transform: rotate(0deg);
  1211. }
  1212. 30% {
  1213. transform: rotate(-484.8deg);
  1214. }
  1215. 60% {
  1216. transform: rotate(-316.7deg);
  1217. }
  1218. 90% {
  1219. transform: rotate(-375deg);
  1220. }
  1221. 100% {
  1222. transform: rotate(-360deg);
  1223. }
  1224. }
  1225. @keyframes spring-rotate-out {
  1226. 0% {
  1227. transform: rotate(-360deg);
  1228. }
  1229. 30% {
  1230. transform: rotate(124.8deg);
  1231. }
  1232. 60% {
  1233. transform: rotate(-43.27deg);
  1234. }
  1235. 90% {
  1236. transform: rotate(15deg);
  1237. }
  1238. 100% {
  1239. transform: rotate(0deg);
  1240. }
  1241. }
  1242. .spoiler-button {
  1243. top: 0;
  1244. left: 0;
  1245. width: 100%;
  1246. height: 100%;
  1247. position: absolute;
  1248. z-index: 100;
  1249. &--minified {
  1250. display: flex;
  1251. left: 4px;
  1252. top: 4px;
  1253. width: auto;
  1254. height: auto;
  1255. align-items: center;
  1256. }
  1257. &--click-thru {
  1258. pointer-events: none;
  1259. }
  1260. &--hidden {
  1261. display: none;
  1262. }
  1263. &__overlay {
  1264. display: block;
  1265. background: transparent;
  1266. width: 100%;
  1267. height: 100%;
  1268. border: 0;
  1269. &__label {
  1270. display: inline-block;
  1271. background: rgba($base-overlay-background, 0.5);
  1272. border-radius: 8px;
  1273. padding: 8px 12px;
  1274. color: $primary-text-color;
  1275. font-weight: 500;
  1276. font-size: 14px;
  1277. }
  1278. &:hover,
  1279. &:focus,
  1280. &:active {
  1281. .spoiler-button__overlay__label {
  1282. background: rgba($base-overlay-background, 0.8);
  1283. }
  1284. }
  1285. &:disabled {
  1286. .spoiler-button__overlay__label {
  1287. background: rgba($base-overlay-background, 0.5);
  1288. }
  1289. }
  1290. }
  1291. }
  1292. .setting-toggle {
  1293. display: block;
  1294. line-height: 24px;
  1295. }
  1296. .setting-toggle__label,
  1297. .setting-meta__label {
  1298. color: $darker-text-color;
  1299. display: inline-block;
  1300. margin-bottom: 14px;
  1301. margin-left: 8px;
  1302. vertical-align: middle;
  1303. }
  1304. .column-settings__row .radio-button {
  1305. display: block;
  1306. }
  1307. .setting-meta__label {
  1308. float: right;
  1309. }
  1310. @keyframes heartbeat {
  1311. 0% {
  1312. transform: scale(1);
  1313. transform-origin: center center;
  1314. animation-timing-function: ease-out;
  1315. }
  1316. 10% {
  1317. transform: scale(0.91);
  1318. animation-timing-function: ease-in;
  1319. }
  1320. 17% {
  1321. transform: scale(0.98);
  1322. animation-timing-function: ease-out;
  1323. }
  1324. 33% {
  1325. transform: scale(0.87);
  1326. animation-timing-function: ease-in;
  1327. }
  1328. 45% {
  1329. transform: scale(1);
  1330. animation-timing-function: ease-out;
  1331. }
  1332. }
  1333. .pulse-loading {
  1334. animation: heartbeat 1.5s ease-in-out infinite both;
  1335. }
  1336. .upload-area {
  1337. align-items: center;
  1338. background: rgba($base-overlay-background, 0.8);
  1339. display: flex;
  1340. height: 100vh;
  1341. justify-content: center;
  1342. left: 0;
  1343. opacity: 0;
  1344. position: fixed;
  1345. top: 0;
  1346. visibility: hidden;
  1347. width: 100vw;
  1348. z-index: 2000;
  1349. * {
  1350. pointer-events: none;
  1351. }
  1352. }
  1353. .upload-area__drop {
  1354. width: 320px;
  1355. height: 160px;
  1356. display: flex;
  1357. box-sizing: border-box;
  1358. position: relative;
  1359. padding: 8px;
  1360. }
  1361. .upload-area__background {
  1362. position: absolute;
  1363. top: 0;
  1364. right: 0;
  1365. bottom: 0;
  1366. left: 0;
  1367. z-index: -1;
  1368. border-radius: 4px;
  1369. background: $ui-base-color;
  1370. box-shadow: 0 0 5px rgba($base-shadow-color, 0.2);
  1371. }
  1372. .upload-area__content {
  1373. flex: 1;
  1374. display: flex;
  1375. align-items: center;
  1376. justify-content: center;
  1377. text-align: center;
  1378. color: $secondary-text-color;
  1379. font-size: 18px;
  1380. font-weight: 500;
  1381. border: 2px dashed $ui-base-lighter-color;
  1382. border-radius: 4px;
  1383. }
  1384. .dropdown--active .emoji-button img {
  1385. opacity: 1;
  1386. filter: none;
  1387. }
  1388. .loading-bar {
  1389. background-color: $ui-highlight-color;
  1390. height: 3px;
  1391. position: fixed;
  1392. top: 0;
  1393. left: 0;
  1394. z-index: 9999;
  1395. }
  1396. .icon-badge-wrapper {
  1397. position: relative;
  1398. }
  1399. .icon-badge {
  1400. position: absolute;
  1401. display: block;
  1402. right: -0.25em;
  1403. top: -0.25em;
  1404. background-color: $ui-highlight-color;
  1405. border-radius: 50%;
  1406. font-size: 75%;
  1407. width: 1em;
  1408. height: 1em;
  1409. }
  1410. .conversation {
  1411. display: flex;
  1412. border-bottom: 1px solid lighten($ui-base-color, 8%);
  1413. padding: 5px;
  1414. padding-bottom: 0;
  1415. &:focus {
  1416. background: lighten($ui-base-color, 2%);
  1417. outline: 0;
  1418. }
  1419. &__avatar {
  1420. flex: 0 0 auto;
  1421. padding: 10px;
  1422. padding-top: 12px;
  1423. position: relative;
  1424. cursor: pointer;
  1425. }
  1426. &__unread {
  1427. display: inline-block;
  1428. background: $highlight-text-color;
  1429. border-radius: 50%;
  1430. width: 0.625rem;
  1431. height: 0.625rem;
  1432. margin: -0.1ex 0.15em 0.1ex;
  1433. }
  1434. &__content {
  1435. flex: 1 1 auto;
  1436. padding: 10px 5px;
  1437. padding-right: 15px;
  1438. overflow: hidden;
  1439. &__info {
  1440. overflow: hidden;
  1441. display: flex;
  1442. flex-direction: row-reverse;
  1443. justify-content: space-between;
  1444. }
  1445. &__relative-time {
  1446. font-size: 15px;
  1447. color: $darker-text-color;
  1448. padding-left: 15px;
  1449. }
  1450. &__names {
  1451. color: $darker-text-color;
  1452. font-size: 15px;
  1453. white-space: nowrap;
  1454. overflow: hidden;
  1455. text-overflow: ellipsis;
  1456. margin-bottom: 4px;
  1457. flex-basis: 90px;
  1458. flex-grow: 1;
  1459. a {
  1460. color: $primary-text-color;
  1461. text-decoration: none;
  1462. &:hover,
  1463. &:focus,
  1464. &:active {
  1465. text-decoration: underline;
  1466. }
  1467. }
  1468. }
  1469. .status__content {
  1470. margin: 0;
  1471. }
  1472. }
  1473. &--unread {
  1474. background: lighten($ui-base-color, 2%);
  1475. &:focus {
  1476. background: lighten($ui-base-color, 4%);
  1477. }
  1478. .conversation__content__info {
  1479. font-weight: 700;
  1480. }
  1481. .conversation__content__relative-time {
  1482. color: $primary-text-color;
  1483. }
  1484. }
  1485. }
  1486. .ui .flash-message {
  1487. margin-top: 10px;
  1488. margin-left: auto;
  1489. margin-right: auto;
  1490. margin-bottom: 0;
  1491. min-width: 75%;
  1492. }
  1493. ::-webkit-scrollbar-thumb {
  1494. border-radius: 0;
  1495. }
  1496. noscript {
  1497. text-align: center;
  1498. img {
  1499. width: 200px;
  1500. opacity: 0.5;
  1501. animation: flicker 4s infinite;
  1502. }
  1503. div {
  1504. font-size: 14px;
  1505. margin: 30px auto;
  1506. color: $secondary-text-color;
  1507. max-width: 400px;
  1508. a {
  1509. color: $highlight-text-color;
  1510. text-decoration: underline;
  1511. &:hover {
  1512. text-decoration: none;
  1513. }
  1514. }
  1515. a {
  1516. word-break: break-word;
  1517. }
  1518. }
  1519. }
  1520. @keyframes flicker {
  1521. 0% {
  1522. opacity: 1;
  1523. }
  1524. 30% {
  1525. opacity: 0.75;
  1526. }
  1527. 100% {
  1528. opacity: 1;
  1529. }
  1530. }