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.

2045 lines
32 KiB

7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
  1. @import 'variables';
  2. .app-body{
  3. -ms-overflow-style: -ms-autohiding-scrollbar;
  4. }
  5. .button {
  6. background-color: darken($color4, 3%);
  7. font-family: inherit;
  8. display: inline-block;
  9. position: relative;
  10. box-sizing: border-box;
  11. text-align: center;
  12. border: 10px none;
  13. color: $color5;
  14. font-size: 14px;
  15. font-weight: 500;
  16. letter-spacing: 0;
  17. text-transform: uppercase;
  18. padding: 0 16px;
  19. height: 36px;
  20. cursor: pointer;
  21. line-height: 36px;
  22. border-radius: 4px;
  23. text-decoration: none;
  24. transition: all 100ms ease-in;
  25. &:hover, &:active, &:focus {
  26. background-color: lighten($color4, 7%);
  27. transition: all 200ms ease-out;
  28. }
  29. &:disabled {
  30. background-color: $color3;
  31. cursor: default;
  32. }
  33. &.button-secondary {
  34. //
  35. }
  36. }
  37. .column-icon {
  38. color: $color3;
  39. background: lighten($color1, 4%);
  40. &:hover {
  41. color: lighten($color3, 7%);
  42. }
  43. }
  44. .column-icon-clear {
  45. font-size: 16px;
  46. padding: 15px;
  47. position: absolute;
  48. right: 48px;
  49. top: 0;
  50. cursor: pointer;
  51. z-index: 2;
  52. }
  53. @media screen and (min-width: 1024px) {
  54. .column-icon-clear {
  55. top: 10px;
  56. }
  57. }
  58. .icon-button {
  59. display: inline-block;
  60. padding: 0;
  61. color: lighten($color1, 26%);
  62. border: none;
  63. background: transparent;
  64. cursor: pointer;
  65. transition: all 100ms ease-in;
  66. &:hover, &:active, &:focus {
  67. color: lighten($color1, 33%);
  68. transition: all 200ms ease-out;
  69. }
  70. &.disabled {
  71. color: lighten($color1, 13%);
  72. cursor: default;
  73. }
  74. &.active {
  75. color: $color4;
  76. }
  77. &::-moz-focus-inner {
  78. border: 0;
  79. }
  80. &::-moz-focus-inner, &:focus, &:active {
  81. outline: 0 !important;
  82. }
  83. &.inverted {
  84. color: lighten($color1, 33%);
  85. &:hover, &:active, &:focus {
  86. color: lighten($color1, 26%);
  87. }
  88. &.active {
  89. color: $color4;
  90. }
  91. &.disabled {
  92. color: $color3;
  93. }
  94. }
  95. }
  96. .text-icon-button {
  97. color: lighten($color1, 33%);
  98. border: none;
  99. background: transparent;
  100. cursor: pointer;
  101. font-weight: 600;
  102. font-size: 11px;
  103. padding: 0 3px;
  104. line-height: 27px;
  105. outline: 0;
  106. transition: all 100ms ease-in;
  107. &:hover, &:active, &:focus {
  108. color: lighten($color1, 26%);
  109. transition: all 200ms ease-out;
  110. }
  111. &.disabled {
  112. color: lighten($color1, 13%);
  113. cursor: default;
  114. }
  115. &.active {
  116. color: $color4;
  117. }
  118. &::-moz-focus-inner {
  119. border: 0;
  120. }
  121. &::-moz-focus-inner, &:focus, &:active {
  122. outline: 0 !important;
  123. }
  124. }
  125. .dropdown--active .icon-button {
  126. color: $color4;
  127. }
  128. .invisible {
  129. font-size: 0;
  130. line-height: 0;
  131. display: inline-block;
  132. width: 0;
  133. }
  134. .ellipsis {
  135. &:after {
  136. content: "";
  137. }
  138. }
  139. .avatar {
  140. border-radius: 4px;
  141. background: transparent no-repeat;
  142. background-position: 50%;
  143. background-clip: padding-box;
  144. position: relative;
  145. }
  146. .lightbox .icon-button {
  147. color: $color1;
  148. }
  149. .compose-form__warning {
  150. color: $color2;
  151. margin-bottom: 15px;
  152. border: 1px solid $color3;
  153. padding: 8px 10px;
  154. border-radius: 4px;
  155. font-size: 12px;
  156. font-weight: 400;
  157. strong {
  158. color: $color5;
  159. font-weight: 500;
  160. }
  161. }
  162. .compose-form__modifiers {
  163. color: $color1;
  164. font-family: inherit;
  165. font-size: 14px;
  166. background: $color5;
  167. border-radius: 0 0 4px 0;
  168. }
  169. .compose-form__buttons {
  170. padding: 10px;
  171. background: darken($color5, 8%);
  172. box-shadow: inset 0 5px 5px rgba($color8, 0.05);
  173. border-radius: 0 0 4px 4px;
  174. display: flex;
  175. .icon-button {
  176. box-sizing: content-box;
  177. padding: 0 3px;
  178. }
  179. }
  180. .compose-form__label {
  181. display: block;
  182. line-height: 24px;
  183. vertical-align: middle;
  184. &.with-border {
  185. border-top: 1px solid $color1;
  186. padding-top: 10px;
  187. }
  188. .compose-form__label__text {
  189. display: inline-block;
  190. vertical-align: middle;
  191. margin-bottom: 14px;
  192. margin-left: 8px;
  193. color: $color3;
  194. }
  195. }
  196. .compose-form__textarea, .follow-form__input {
  197. background: $color5;
  198. &:disabled {
  199. background: $color2;
  200. }
  201. }
  202. .emojione {
  203. display: inline-block;
  204. font-size: inherit;
  205. vertical-align: middle;
  206. margin: -.2ex .15em .2ex;
  207. width: 16px;
  208. height: 16px;
  209. img {
  210. width: auto;
  211. }
  212. }
  213. .reply-indicator {
  214. border-radius: 4px 4px 0 0;
  215. position: relative;
  216. bottom: -2px;
  217. background: $color3;
  218. padding: 10px;
  219. .reply-indicator__display-name {
  220. color: $color1;
  221. }
  222. }
  223. .status__content, .reply-indicator__content {
  224. font-size: 15px;
  225. line-height: 20px;
  226. word-wrap: break-word;
  227. font-weight: 400;
  228. overflow: hidden;
  229. white-space: pre-wrap;
  230. .emojione {
  231. width: 18px;
  232. height: 18px;
  233. }
  234. p {
  235. margin-bottom: 20px;
  236. &:last-child {
  237. margin-bottom: 0;
  238. }
  239. }
  240. a {
  241. color: $color2;
  242. text-decoration: none;
  243. &:hover {
  244. text-decoration: underline;
  245. .fa {
  246. color: lighten($color1, 40%);
  247. }
  248. }
  249. &.mention {
  250. &:hover {
  251. text-decoration: none;
  252. span {
  253. text-decoration: underline;
  254. }
  255. }
  256. }
  257. .fa {
  258. color: lighten($color1, 30%);
  259. }
  260. }
  261. .status__content__spoiler-link {
  262. background: lighten($color1, 30%);
  263. &:hover {
  264. background: lighten($color1, 33%);
  265. text-decoration: none;
  266. }
  267. }
  268. }
  269. a.status__content__spoiler-link {
  270. display: inline-block;
  271. border-radius: 2px;
  272. color: lighten($color1, 8%);
  273. font-weight: 500;
  274. font-size: 11px;
  275. padding: 0px 6px;
  276. text-transform: uppercase;
  277. line-height: inherit;
  278. }
  279. .status {
  280. padding: 8px 10px;
  281. padding-left: 68px;
  282. position: relative;
  283. min-height: 48px;
  284. border-bottom: 1px solid lighten($color1, 8%);
  285. cursor: default;
  286. .status__relative-time {
  287. color: lighten($color1, 26%);
  288. }
  289. .status__display-name {
  290. color: lighten($color1, 26%);
  291. }
  292. &.light {
  293. .status__relative-time {
  294. color: $color3;
  295. }
  296. .status__display-name {
  297. color: $color1;
  298. }
  299. .display-name {
  300. strong {
  301. color: $color1;
  302. }
  303. span {
  304. color: $color3;
  305. }
  306. }
  307. .status__content {
  308. color: $color1;
  309. a {
  310. color: $color4;
  311. }
  312. a.status__content__spoiler-link {
  313. color: $color5;
  314. background: $color3;
  315. &:hover {
  316. background: lighten($color3, 8%);
  317. }
  318. }
  319. }
  320. }
  321. }
  322. .status-check-box {
  323. border-bottom: 1px solid lighten($color1, 8%);
  324. .status__content {
  325. background: lighten($color1, 4%);
  326. }
  327. }
  328. .status__prepend {
  329. margin-left: 68px;
  330. color: lighten($color1, 26%);
  331. padding: 8px 0;
  332. padding-bottom: 2px;
  333. font-size: 14px;
  334. position: relative;
  335. .status__display-name strong {
  336. color: lighten($color1, 26%);
  337. }
  338. }
  339. .detailed-status {
  340. background: lighten($color1, 4%);
  341. .status__content {
  342. font-size: 19px;
  343. line-height: 24px;
  344. .emojione {
  345. width: 22px;
  346. height: 22px;
  347. }
  348. }
  349. }
  350. .detailed-status__meta {
  351. margin-top: 15px;
  352. color: lighten($color1, 26%);
  353. font-size: 14px;
  354. line-height: 18px;
  355. }
  356. .detailed-status__action-bar {
  357. background: lighten($color1, 4%);
  358. display: flex;
  359. flex-direction: row;
  360. border-top: 1px solid lighten($color1, 8%);
  361. border-bottom: 1px solid lighten($color1, 8%);
  362. padding: 10px 0;
  363. }
  364. .reply-indicator__content {
  365. color: $color1;
  366. font-size: 14px;
  367. a {
  368. color: lighten($color1, 20%);
  369. }
  370. }
  371. .account {
  372. padding: 10px;
  373. border-bottom: 1px solid lighten($color1, 8%);
  374. .account__display-name {
  375. flex: 1 1 auto;
  376. display: block;
  377. color: $color3;
  378. overflow: hidden;
  379. text-decoration: none;
  380. font-size: 14px;
  381. }
  382. }
  383. .account__header {
  384. flex: 0 0 auto;
  385. background: lighten($color1, 4%);
  386. text-align: center;
  387. background-size: cover;
  388. background-position: center;
  389. position: relative;
  390. & > div {
  391. background: rgba(lighten($color1, 4%), 0.9);
  392. }
  393. .account__header__content {
  394. color: $color2;
  395. }
  396. .account__header__display-name {
  397. color: $color5;
  398. }
  399. .account__header__username {
  400. color: $color4;
  401. }
  402. }
  403. .account__header__content {
  404. word-wrap: break-word;
  405. word-break: normal;
  406. font-weight: 400;
  407. overflow: hidden;
  408. color: $color3;
  409. p {
  410. margin-bottom: 20px;
  411. &:last-child {
  412. margin-bottom: 0;
  413. }
  414. }
  415. a {
  416. color: inherit;
  417. text-decoration: underline;
  418. &:hover {
  419. text-decoration: none;
  420. }
  421. }
  422. }
  423. .account__header__display-name {
  424. .emojione {
  425. width: 25px;
  426. height: 25px;
  427. }
  428. }
  429. .account__action-bar {
  430. border-top: 1px solid lighten($color1, 8%);
  431. border-bottom: 1px solid lighten($color1, 8%);
  432. line-height: 36px;
  433. overflow: hidden;
  434. flex: 0 0 auto;
  435. display: flex;
  436. }
  437. .account__action-bar__tab {
  438. text-decoration: none;
  439. overflow: hidden;
  440. width: 80px;
  441. border-left: 1px solid lighten($color1, 8%);
  442. padding: 10px 5px;
  443. & > span {
  444. display: block;
  445. text-transform: uppercase;
  446. font-size: 11px;
  447. color: $color3;
  448. }
  449. strong {
  450. display: block;
  451. font-size: 15px;
  452. font-weight: 500;
  453. color: $color5;
  454. }
  455. abbr {
  456. color: lighten($color1, 26%);
  457. }
  458. }
  459. .status__display-name, .status__relative-time, .detailed-status__display-name, .detailed-status__datetime, .detailed-status__application, .account__display-name {
  460. text-decoration: none;
  461. }
  462. .status__display-name, .account__display-name {
  463. strong {
  464. color: $color5;
  465. }
  466. &.muted {
  467. .emojione {
  468. opacity: 0.5;
  469. }
  470. }
  471. }
  472. .status__display-name, .reply-indicator__display-name, .detailed-status__display-name, .account__display-name {
  473. &:hover {
  474. strong {
  475. text-decoration: underline;
  476. }
  477. }
  478. }
  479. .account__display-name {
  480. strong {
  481. display: block;
  482. }
  483. }
  484. .detailed-status__display-name {
  485. color: $color2;
  486. line-height: 24px;
  487. strong, span {
  488. display: block;
  489. }
  490. strong {
  491. font-size: 16px;
  492. color: $color5;
  493. }
  494. }
  495. .muted {
  496. .status__content p, .status__content a {
  497. color: lighten($color1, 26%);
  498. }
  499. .status__display-name strong {
  500. color: lighten($color1, 26%);
  501. }
  502. .status__avatar {
  503. opacity: 0.5;
  504. }
  505. a.status__content__spoiler-link {
  506. background: lighten($color1, 26%);
  507. color: lighten($color1, 4%);
  508. &:hover {
  509. background: lighten($color1, 29%);
  510. text-decoration: none;
  511. }
  512. }
  513. }
  514. .notification__message {
  515. margin-left: 68px;
  516. padding: 8px 0;
  517. padding-bottom: 0;
  518. cursor: default;
  519. color: $color3;
  520. font-size: 15px;
  521. position: relative;
  522. .fa {
  523. color: $color4;
  524. }
  525. }
  526. .notification__display-name {
  527. color: inherit;
  528. text-decoration: none;
  529. &:hover {
  530. color: $color5;
  531. text-decoration: underline;
  532. }
  533. }
  534. .status__relative-time, .detailed-status__datetime {
  535. &:hover {
  536. text-decoration: underline;
  537. }
  538. }
  539. .transparent-background, .imageloader {
  540. background: image-url('void.png');
  541. }
  542. .imageloader {
  543. display: block;
  544. }
  545. .navigation-bar {
  546. padding: 10px;
  547. display: flex;
  548. flex-shrink: 0;
  549. cursor: default;
  550. color: $color3;
  551. strong {
  552. color: $color5;
  553. }
  554. }
  555. .dropdown {
  556. display: inline-block;
  557. }
  558. .dropdown__content {
  559. display: none;
  560. position: absolute;
  561. }
  562. .dropdown__sep {
  563. border-bottom: 1px solid darken($color2, 8%);
  564. margin: 5px 7px 6px;
  565. padding-top: 1px;
  566. }
  567. .dropdown--active .dropdown__content {
  568. display: block;
  569. z-index: 9999;
  570. &:before {
  571. content: "";
  572. display: block;
  573. position: absolute;
  574. width: 0;
  575. height: 0;
  576. border-style: solid;
  577. border-width: 0 4.5px 7.8px 4.5px;
  578. border-color: transparent transparent $color2 transparent;
  579. top: -7px;
  580. left: 8px;
  581. }
  582. &.light {
  583. &:before {
  584. border-color: transparent transparent $color5 transparent;
  585. }
  586. }
  587. & > ul {
  588. list-style: none;
  589. background: $color2;
  590. padding: 4px 0;
  591. border-radius: 4px;
  592. box-shadow: 0 0 15px rgba($color8, 0.4);
  593. min-width: 140px;
  594. position: relative;
  595. left: -10px;
  596. }
  597. &.dropdown__left {
  598. & > ul {
  599. left: -98px;
  600. }
  601. & > .emoji-dialog {
  602. left: -210px;
  603. }
  604. }
  605. & > ul > li > a {
  606. font-size: 13px;
  607. line-height: 18px;
  608. display: block;
  609. padding: 4px 14px;
  610. box-sizing: border-box;
  611. width: 140px;
  612. text-decoration: none;
  613. background: $color2;
  614. color: $color1;
  615. overflow: hidden;
  616. text-overflow: ellipsis;
  617. white-space: nowrap;
  618. &:focus {
  619. outline: 0;
  620. }
  621. &:hover {
  622. background: $color4;
  623. color: $color2;
  624. }
  625. }
  626. }
  627. .static-content {
  628. padding: 10px;
  629. padding-top: 20px;
  630. color: lighten($color1, 26%);
  631. h1 {
  632. font-size: 16px;
  633. font-weight: 500;
  634. margin-bottom: 40px;
  635. text-align: center;
  636. }
  637. p {
  638. font-size: 13px;
  639. margin-bottom: 20px;
  640. }
  641. }
  642. .columns-area {
  643. flex-direction: row;
  644. justify-content: flex-start;
  645. }
  646. @media screen and (min-width: 360px) {
  647. .columns-area {
  648. padding: 10px;
  649. }
  650. }
  651. .column {
  652. width: 330px;
  653. position: relative;
  654. box-sizing: border-box;
  655. display: flex;
  656. flex-direction: column;
  657. > .scrollable {
  658. background: $color1;
  659. }
  660. }
  661. .ui {
  662. flex: 0 0 auto;
  663. display: flex;
  664. flex-direction: column;
  665. width: 100%;
  666. height: 100%;
  667. background: darken($color1, 7%);
  668. }
  669. .drawer {
  670. width: 300px;
  671. box-sizing: border-box;
  672. display: flex;
  673. flex-direction: column;
  674. overflow-y: hidden;
  675. }
  676. .drawer__tab {
  677. display: block;
  678. flex: 1 1 auto;
  679. padding: 15px;
  680. padding-bottom: 13px;
  681. color: $color3;
  682. text-decoration: none;
  683. text-align: center;
  684. font-size: 16px;
  685. border-bottom: 2px solid transparent;
  686. }
  687. .column, .drawer {
  688. flex: 1 1 100%;
  689. overflow: hidden;
  690. }
  691. @media screen and (min-width: 360px) {
  692. .tabs-bar {
  693. margin: 10px;
  694. margin-bottom: 0;
  695. }
  696. .search {
  697. margin-bottom: 10px;
  698. }
  699. }
  700. @media screen and (max-width: 1024px) {
  701. .column, .drawer {
  702. width: 100%;
  703. padding: 0;
  704. }
  705. .columns-area {
  706. flex-direction: column;
  707. }
  708. .search__input, .autosuggest-textarea__textarea {
  709. font-size: 16px;
  710. }
  711. }
  712. @media screen and (min-width: 1024px) {
  713. .columns-area {
  714. padding: 0;
  715. }
  716. .column, .drawer {
  717. flex: 0 0 auto;
  718. padding: 10px;
  719. padding-left: 5px;
  720. padding-right: 5px;
  721. &:first-child {
  722. padding-left: 10px;
  723. }
  724. &:last-child {
  725. padding-right: 10px;
  726. }
  727. }
  728. }
  729. @media screen and (min-width: 2560px) {
  730. .columns-area {
  731. justify-content: center;
  732. }
  733. .column, .drawer {
  734. width: 350px;
  735. border-radius: 4px;
  736. height: 90vh;
  737. margin-top: 5vh;
  738. }
  739. }
  740. .drawer__pager {
  741. box-sizing: border-box;
  742. padding: 0;
  743. flex-grow: 1;
  744. position: relative;
  745. overflow: hidden;
  746. display: flex;
  747. }
  748. .drawer__inner {
  749. position: absolute;
  750. top: 0;
  751. left: 0;
  752. background: lighten($color1, 13%);
  753. box-sizing: border-box;
  754. padding: 0;
  755. display: flex;
  756. flex-direction: column;
  757. overflow: hidden;
  758. overflow-y: auto;
  759. width: 100%;
  760. height: 100%;
  761. &.darker {
  762. background: $color1;
  763. }
  764. }
  765. .drawer__header {
  766. flex: 0 0 auto;
  767. font-size: 16px;
  768. background: lighten($color1, 8%);
  769. margin-bottom: 10px;
  770. display: flex;
  771. flex-direction: row;
  772. a {
  773. transition: all 100ms ease-in;
  774. &:hover {
  775. background: lighten($color1, 3%);
  776. transition: all 200ms ease-out;
  777. }
  778. }
  779. }
  780. .tabs-bar {
  781. display: flex;
  782. background: lighten($color1, 8%);
  783. flex: 0 0 auto;
  784. overflow-y: auto;
  785. }
  786. .tabs-bar__link {
  787. display: block;
  788. flex: 1 1 auto;
  789. padding: 15px 10px;
  790. color: $color5;
  791. text-decoration: none;
  792. text-align: center;
  793. font-size: 14px;
  794. font-weight: 500;
  795. border-bottom: 2px solid lighten($color1, 8%);
  796. transition: all 200ms linear;
  797. .fa {
  798. font-weight: 400;
  799. font-size: 16px;
  800. }
  801. &.active {
  802. border-bottom: 2px solid $color4;
  803. color: $color4;
  804. }
  805. &:hover, &:focus, &:active {
  806. background: lighten($color1, 14%);
  807. transition: all 100ms linear;
  808. }
  809. span {
  810. margin-left: 5px;
  811. display: none;
  812. }
  813. }
  814. @media screen and (min-width: 600px) {
  815. .tabs-bar__link {
  816. span {
  817. display: inline;
  818. }
  819. }
  820. }
  821. @media screen and (min-width: 1025px) {
  822. .tabs-bar {
  823. display: none;
  824. }
  825. }
  826. .react-autosuggest__container {
  827. position: relative;
  828. }
  829. .react-autosuggest__suggestions-container {
  830. position: absolute;
  831. top: 100%;
  832. width: 100%;
  833. z-index: 99;
  834. box-shadow: 0 0 15px rgba($color8, 0.4);
  835. }
  836. .react-autosuggest__section-title {
  837. background: $color3;
  838. padding: 4px 10px;
  839. font-weight: 500;
  840. cursor: default;
  841. color: $color1;
  842. text-transform: uppercase;
  843. font-size: 11px;
  844. }
  845. .react-autosuggest__suggestions-list {
  846. background: $color2;
  847. color: $color1;
  848. font-size: 14px;
  849. }
  850. .react-autosuggest__suggestion {
  851. padding: 10px;
  852. cursor: pointer;
  853. }
  854. .react-autosuggest__suggestion--focused {
  855. background: $color4;
  856. color: $color5;
  857. }
  858. .scrollable {
  859. overflow-y: scroll;
  860. overflow-x: hidden;
  861. flex: 1 1 auto;
  862. -webkit-overflow-scrolling: touch;
  863. &.optionally-scrollable {
  864. overflow-y: auto;
  865. }
  866. }
  867. .column-back-button {
  868. padding: 15px;
  869. font-size: 16px;
  870. background: lighten($color1, 4%);
  871. flex: 0 0 auto;
  872. cursor: pointer;
  873. color: $color4;
  874. z-index: 3;
  875. &:hover {
  876. text-decoration: underline;
  877. }
  878. }
  879. .react-toggle {
  880. display: inline-block;
  881. position: relative;
  882. cursor: pointer;
  883. background-color: transparent;
  884. border: 0;
  885. padding: 0;
  886. user-select: none;
  887. -webkit-tap-highlight-color: rgba($color8, 0);
  888. -webkit-tap-highlight-color: transparent;
  889. }
  890. .react-toggle-screenreader-only {
  891. border: 0;
  892. clip: rect(0 0 0 0);
  893. height: 1px;
  894. margin: -1px;
  895. overflow: hidden;
  896. padding: 0;
  897. position: absolute;
  898. width: 1px;
  899. }
  900. .react-toggle--disabled {
  901. cursor: not-allowed;
  902. opacity: 0.5;
  903. transition: opacity 0.25s;
  904. }
  905. .react-toggle-track {
  906. width: 50px;
  907. height: 24px;
  908. padding: 0;
  909. border-radius: 30px;
  910. background-color: $color1;
  911. transition: all 0.2s ease;
  912. }
  913. .react-toggle:hover:not(.react-toggle--disabled) .react-toggle-track {
  914. background-color: darken($color1, 10%);
  915. }
  916. .react-toggle--checked .react-toggle-track {
  917. background-color: $color4;
  918. }
  919. .react-toggle--checked:hover:not(.react-toggle--disabled) .react-toggle-track {
  920. background-color: lighten($color4, 10%);
  921. }
  922. .react-toggle-track-check {
  923. position: absolute;
  924. width: 14px;
  925. height: 10px;
  926. top: 0px;
  927. bottom: 0px;
  928. margin-top: auto;
  929. margin-bottom: auto;
  930. line-height: 0;
  931. left: 8px;
  932. opacity: 0;
  933. transition: opacity 0.25s ease;
  934. }
  935. .react-toggle--checked .react-toggle-track-check {
  936. opacity: 1;
  937. transition: opacity 0.25s ease;
  938. }
  939. .react-toggle-track-x {
  940. position: absolute;
  941. width: 10px;
  942. height: 10px;
  943. top: 0px;
  944. bottom: 0px;
  945. margin-top: auto;
  946. margin-bottom: auto;
  947. line-height: 0;
  948. right: 10px;
  949. opacity: 1;
  950. transition: opacity 0.25s ease;
  951. }
  952. .react-toggle--checked .react-toggle-track-x {
  953. opacity: 0;
  954. }
  955. .react-toggle-thumb {
  956. transition: all 0.5s cubic-bezier(0.23, 1, 0.32, 1) 0ms;
  957. position: absolute;
  958. top: 1px;
  959. left: 1px;
  960. width: 22px;
  961. height: 22px;
  962. border: 1px solid $color1;
  963. border-radius: 50%;
  964. background-color: darken($color5, 2%);
  965. box-sizing: border-box;
  966. transition: all 0.25s ease;
  967. }
  968. .react-toggle--checked .react-toggle-thumb {
  969. left: 27px;
  970. border-color: $color4;
  971. }
  972. .column-link {
  973. background: lighten($color1, 8%);
  974. color: $color5;
  975. &:hover {
  976. background: lighten($color1, 11%);
  977. }
  978. }
  979. .autosuggest-textarea, .spoiler-input {
  980. position: relative;
  981. }
  982. .autosuggest-textarea__textarea, .spoiler-input__input {
  983. display: block;
  984. box-sizing: border-box;
  985. width: 100%;
  986. resize: none;
  987. margin: 0;
  988. color: $color1;
  989. padding: 10px;
  990. font-family: inherit;
  991. font-size: 14px;
  992. resize: vertical;
  993. border: 0;
  994. outline: 0;
  995. &:focus {
  996. outline: 0;
  997. }
  998. }
  999. .spoiler-input__input {
  1000. border-radius: 4px;
  1001. }
  1002. .autosuggest-textarea__textarea {
  1003. height: 100px;
  1004. background: $color5;
  1005. border-radius: 4px 4px 0 0;
  1006. padding-bottom: 0;
  1007. padding-right: 10px + 22px;
  1008. }
  1009. .autosuggest-textarea__suggestions {
  1010. position: absolute;
  1011. top: 100%;
  1012. width: 100%;
  1013. z-index: 99;
  1014. box-shadow: 0 0 15px rgba($color8, 0.4);
  1015. background: $color2;
  1016. color: $color1;
  1017. font-size: 14px;
  1018. }
  1019. .autosuggest-textarea__suggestions__item {
  1020. padding: 10px;
  1021. cursor: pointer;
  1022. &:hover {
  1023. background: darken($color2, 10%);
  1024. }
  1025. &.selected {
  1026. background: $color4;
  1027. color: $color5;
  1028. }
  1029. }
  1030. .getting-started {
  1031. box-sizing: border-box;
  1032. padding-bottom: 235px;
  1033. background: image-url('mastodon-getting-started.png') no-repeat 0 100% local;
  1034. flex: 1 0 auto;
  1035. p {
  1036. color: $color2;
  1037. }
  1038. a {
  1039. color: lighten($color1, 26%);
  1040. }
  1041. }
  1042. .setting-text {
  1043. color: $color3;
  1044. background: transparent;
  1045. border: none;
  1046. border-bottom: 2px solid $color3;
  1047. &:focus, &:active {
  1048. color: $color5;
  1049. border-bottom-color: $color4;
  1050. }
  1051. }
  1052. @import 'boost';
  1053. button.icon-button i.fa-retweet {
  1054. height: 19px;
  1055. width: 22px;
  1056. background-position: 0 0;
  1057. transition: background-position 0.9s steps(10);
  1058. transition-duration: 0s;
  1059. &::before {
  1060. display: none !important;
  1061. }
  1062. }
  1063. button.icon-button.active i.fa-retweet {
  1064. transition-duration: 0.9s;
  1065. background-position: 0 100%;
  1066. }
  1067. .status-card {
  1068. display: flex;
  1069. cursor: pointer;
  1070. font-size: 14px;
  1071. border: 1px solid lighten($color1, 8%);
  1072. border-radius: 4px;
  1073. color: lighten($color1, 26%);
  1074. margin-top: 14px;
  1075. text-decoration: none;
  1076. overflow: hidden;
  1077. &:hover {
  1078. background: lighten($color1, 8%);
  1079. }
  1080. }
  1081. .status-card__title {
  1082. display: block;
  1083. font-weight: 500;
  1084. margin-bottom: 5px;
  1085. color: $color3;
  1086. overflow: hidden;
  1087. text-overflow: ellipsis;
  1088. white-space: nowrap;
  1089. }
  1090. .status-card__description {
  1091. color: $color3;
  1092. }
  1093. .status-card__image {
  1094. flex: 0 0 100px;
  1095. background: lighten($color1, 8%);
  1096. }
  1097. .load-more {
  1098. display: block;
  1099. color: lighten($color1, 26%);
  1100. text-align: center;
  1101. padding: 15px;
  1102. text-decoration: none;
  1103. &:hover {
  1104. background: lighten($color1, 2%);
  1105. }
  1106. }
  1107. .missing-indicator {
  1108. text-align: center;
  1109. font-size: 16px;
  1110. font-weight: 500;
  1111. color: lighten($color1, 16%);
  1112. padding-top: 210px;
  1113. background: image-url('mastodon-not-found.png') no-repeat center -50px;
  1114. cursor: default;
  1115. }
  1116. .column-header {
  1117. padding: 15px;
  1118. font-size: 16px;
  1119. background: lighten($color1, 4%);
  1120. flex: 0 0 auto;
  1121. cursor: pointer;
  1122. position: relative;
  1123. z-index: 2;
  1124. &.active {
  1125. box-shadow: 0 1px 0 rgba($color4, 0.3);
  1126. }
  1127. &.active .fa {
  1128. color: $color4;
  1129. text-shadow: 0 0 10px rgba($color4, 0.4);
  1130. }
  1131. }
  1132. .loading-indicator {
  1133. color: $color2;
  1134. }
  1135. .collapsable-collapsed {
  1136. color: $color3;
  1137. background: lighten($color1, 4%);
  1138. }
  1139. .collapsable {
  1140. color: $color5;
  1141. background: lighten($color1, 8%);
  1142. &:hover {
  1143. color: $color5;
  1144. background: lighten($color1, 8%);
  1145. }
  1146. }
  1147. .media-spoiler {
  1148. background: $color8;
  1149. color: $color5;
  1150. }
  1151. .modal-container--preloader {
  1152. background: lighten($color1, 8%);
  1153. }
  1154. .account--panel {
  1155. background: lighten($color1, 4%);
  1156. border-top: 1px solid lighten($color1, 8%);
  1157. border-bottom: 1px solid lighten($color1, 8%);
  1158. }
  1159. .column-settings--outer {
  1160. background: lighten($color1, 8%);
  1161. }
  1162. .column-settings--section {
  1163. color: $color3;
  1164. }
  1165. .modal-container__nav {
  1166. color: $color5;
  1167. }
  1168. .account--follows-info {
  1169. color: $color5;
  1170. }
  1171. .setting-toggle {
  1172. color: $color3;
  1173. }
  1174. .report__target {
  1175. border-bottom: 1px solid lighten($color1, 4%);
  1176. color: $color2;
  1177. padding-bottom: 10px;
  1178. strong {
  1179. display: block;
  1180. color: $color5;
  1181. font-weight: 500;
  1182. }
  1183. }
  1184. .report__textarea {
  1185. background: transparent;
  1186. box-sizing: border-box;
  1187. border: 0;
  1188. border-bottom: 2px solid $color3;
  1189. border-radius: 2px 2px 0 0;
  1190. padding: 7px 4px;
  1191. font-size: 14px;
  1192. color: $color5;
  1193. display: block;
  1194. width: 100%;
  1195. outline: 0;
  1196. font-family: inherit;
  1197. resize: vertical;
  1198. &:active, &:focus {
  1199. border-bottom-color: $color4;
  1200. background: rgba($color8, 0.1);
  1201. }
  1202. }
  1203. .empty-column-indicator {
  1204. color: lighten($color1, 20%);
  1205. background: $color1;
  1206. text-align: center;
  1207. padding: 20px;
  1208. font-size: 15px;
  1209. font-weight: 400;
  1210. cursor: default;
  1211. display: flex;
  1212. flex: 1 1 auto;
  1213. align-items: center;
  1214. a {
  1215. color: $color4;
  1216. text-decoration: none;
  1217. &:hover {
  1218. text-decoration: underline;
  1219. }
  1220. }
  1221. }
  1222. .status-list__unread-indicator, .notifications__unread-indicator {
  1223. position: absolute;
  1224. top: 35px;
  1225. left: 0;
  1226. right: 0;
  1227. margin: 0 auto;
  1228. width: 60%;
  1229. pointer-events: none;
  1230. height: 28px;
  1231. z-index: 1;
  1232. background: radial-gradient(ellipse, rgba($color4, 0.23) 0%, rgba($color4, 0) 60%);
  1233. }
  1234. .emoji-dialog {
  1235. width: 245px;
  1236. height: 270px;
  1237. background: $color5;
  1238. box-sizing: border-box;
  1239. border-radius: 4px;
  1240. overflow: hidden;
  1241. position: relative;
  1242. box-shadow: 0 0 8px rgba($color8, 0.2);
  1243. .emojione {
  1244. margin: 0;
  1245. width: 100%;
  1246. height: auto;
  1247. }
  1248. .emoji-dialog-header {
  1249. padding: 0 10px;
  1250. ul {
  1251. padding: 0;
  1252. margin: 0;
  1253. list-style: none;
  1254. }
  1255. li {
  1256. display: inline-block;
  1257. box-sizing: border-box;
  1258. padding: 10px 5px;
  1259. cursor: pointer;
  1260. border-bottom: 2px solid transparent;
  1261. .emoji {
  1262. width: 18px;
  1263. height: 18px;
  1264. }
  1265. img, svg {
  1266. width: 18px;
  1267. height: 18px;
  1268. filter: grayscale(100%);
  1269. }
  1270. &:hover {
  1271. img, svg {
  1272. filter: grayscale(0);
  1273. }
  1274. }
  1275. &.active {
  1276. border-bottom-color: $color4;
  1277. img, svg {
  1278. filter: grayscale(0);
  1279. }
  1280. }
  1281. }
  1282. }
  1283. .emoji-row {
  1284. box-sizing: border-box;
  1285. overflow-y: hidden;
  1286. padding-left: 10px;
  1287. .emoji {
  1288. display: inline-block;
  1289. padding: 5px;
  1290. border-radius: 4px;
  1291. }
  1292. }
  1293. .emoji-category-header {
  1294. box-sizing: border-box;
  1295. overflow-y: hidden;
  1296. padding: 10px 8px 10px 16px;
  1297. display: table;
  1298. > * {
  1299. display: table-cell;
  1300. vertical-align: middle;
  1301. }
  1302. }
  1303. .emoji-category-title {
  1304. font-size: 12px;
  1305. text-transform: uppercase;
  1306. font-weight: 500;
  1307. color: darken($color2, 18%);
  1308. cursor: default;
  1309. }
  1310. .emoji-category-heading-decoration {
  1311. text-align: right;
  1312. }
  1313. .modifiers {
  1314. list-style: none;
  1315. padding: 0;
  1316. margin: 0;
  1317. vertical-align: middle;
  1318. white-space: nowrap;
  1319. margin-top: 4px;
  1320. li {
  1321. display: inline-block;
  1322. padding: 0 2px;
  1323. &:last-of-type {
  1324. padding-right: 0;
  1325. }
  1326. }
  1327. .modifier {
  1328. display: inline-block;
  1329. border-radius: 10px;
  1330. width: 15px;
  1331. height: 15px;
  1332. position: relative;
  1333. cursor: pointer;
  1334. &.active:after {
  1335. content: "";
  1336. display: block;
  1337. position: absolute;
  1338. width: 7px;
  1339. height: 7px;
  1340. border-radius: 10px;
  1341. border: 2px solid $color5;
  1342. top: 2px;
  1343. left: 2px;
  1344. }
  1345. }
  1346. }
  1347. .emoji-search-wrapper {
  1348. padding: 10px;
  1349. border-bottom: 1px solid lighten($color2, 4%);
  1350. }
  1351. .emoji-search {
  1352. font-size: 14px;
  1353. font-weight: 400;
  1354. padding: 7px 9px;
  1355. font-family: inherit;
  1356. display: block;
  1357. width: 100%;
  1358. background: rgba($color2, 0.3);
  1359. color: darken($color2, 18%);
  1360. border: 1px solid $color2;
  1361. border-radius: 4px;
  1362. }
  1363. .emoji-categories-wrapper {
  1364. position: absolute;
  1365. top: 42px;
  1366. bottom: 0;
  1367. left: 0;
  1368. right: 0;
  1369. }
  1370. .emoji-search-wrapper + .emoji-categories-wrapper {
  1371. top: 93px;
  1372. }
  1373. .emoji-row .emoji {
  1374. img, svg {
  1375. transition: transform 60ms ease-in-out;
  1376. }
  1377. &:hover {
  1378. background: lighten($color2, 3%);
  1379. img, svg {
  1380. transform: translateZ(0) scale(1.2);
  1381. }
  1382. }
  1383. }
  1384. .emoji {
  1385. width: 22px;
  1386. height: 22px;
  1387. cursor: pointer;
  1388. &:focus {
  1389. outline: 0;
  1390. }
  1391. }
  1392. }
  1393. .autosuggest-status {
  1394. overflow: hidden;
  1395. white-space: nowrap;
  1396. text-overflow: ellipsis;
  1397. strong {
  1398. font-weight: 500;
  1399. }
  1400. }
  1401. .upload-area {
  1402. position: absolute;
  1403. top: 0;
  1404. left: 0;
  1405. width: 100%;
  1406. height: 100%;
  1407. visibility: hidden;
  1408. background: rgba($color8, 0.8);
  1409. display: flex;
  1410. align-items: center;
  1411. justify-content: center;
  1412. opacity: 0;
  1413. z-index: 2000;
  1414. * {
  1415. pointer-events: none;
  1416. }
  1417. }
  1418. .upload-area__drop {
  1419. width: 320px;
  1420. height: 160px;
  1421. display: flex;
  1422. box-sizing: border-box;
  1423. position: relative;
  1424. padding: 8px;
  1425. }
  1426. .upload-area__background {
  1427. position: absolute;
  1428. top: 0;
  1429. right: 0;
  1430. bottom: 0;
  1431. left: 0;
  1432. z-index: -1;
  1433. border-radius: 4px;
  1434. background: $color1;
  1435. box-shadow: 0 0 5px rgba($color8, 0.2);
  1436. }
  1437. .upload-area__content {
  1438. flex: 1;
  1439. display: flex;
  1440. align-items: center;
  1441. justify-content: center;
  1442. color: $color2;
  1443. font-size: 18px;
  1444. font-weight: 500;
  1445. border: 2px dashed lighten($color1, 26%);
  1446. border-radius: 4px;
  1447. }
  1448. .upload-progress {
  1449. padding: 10px;
  1450. color: lighten($color1, 26%);
  1451. overflow: hidden;
  1452. display: flex;
  1453. .fa {
  1454. font-size: 34px;
  1455. margin-right: 10px;
  1456. }
  1457. span {
  1458. font-size: 12px;
  1459. text-transform: uppercase;
  1460. font-weight: 500;
  1461. display: block;
  1462. }
  1463. }
  1464. .upload-progress__backdrop {
  1465. width: 100%;
  1466. height: 6px;
  1467. border-radius: 6px;
  1468. background: lighten($color1, 26%);
  1469. position: relative;
  1470. margin-top: 5px;
  1471. }
  1472. .upload-progress__tracker {
  1473. position: absolute;
  1474. left: 0;
  1475. top: 0;
  1476. height: 6px;
  1477. background: $color4;
  1478. border-radius: 6px;
  1479. }
  1480. .emoji-button {
  1481. outline: 0;
  1482. &:active, &:focus {
  1483. outline: 0 !important;
  1484. }
  1485. img {
  1486. filter: grayscale(100%);
  1487. opacity: 0.8;
  1488. display: block;
  1489. margin: 0;
  1490. width: 22px;
  1491. height: 22px;
  1492. margin-top: 2px;
  1493. }
  1494. &:hover, &:active, &:focus {
  1495. img {
  1496. opacity: 1;
  1497. filter: none;
  1498. }
  1499. }
  1500. }
  1501. .dropdown--active .emoji-button img {
  1502. opacity: 1;
  1503. filter: none;
  1504. }
  1505. .privacy-dropdown {
  1506. position: relative;
  1507. }
  1508. .privacy-dropdown__dropdown {
  1509. display: none;
  1510. position: absolute;
  1511. left: 0;
  1512. top: 27px;
  1513. width: 230px;
  1514. background: $color5;
  1515. border-radius: 0 4px 4px 4px;
  1516. z-index: 2;
  1517. overflow: hidden;
  1518. }
  1519. .privacy-dropdown__option {
  1520. color: $color1;
  1521. padding: 10px;
  1522. cursor: pointer;
  1523. display: flex;
  1524. &:hover, &.active {
  1525. background: $color4;
  1526. color: $color5;
  1527. .privacy-dropdown__option__content {
  1528. color: $color5;
  1529. strong {
  1530. color: $color5;
  1531. }
  1532. }
  1533. }
  1534. &.active:hover {
  1535. background: lighten($color4, 4%);
  1536. }
  1537. }
  1538. .privacy-dropdown__option__icon {
  1539. display: flex;
  1540. align-items: center;
  1541. justify-content: center;
  1542. margin-right: 10px;
  1543. }
  1544. .privacy-dropdown__option__content {
  1545. flex: 1 1 auto;
  1546. color: darken($color3, 24%);
  1547. strong {
  1548. font-weight: 500;
  1549. display: block;
  1550. color: $color1;
  1551. }
  1552. }
  1553. .privacy-dropdown.active {
  1554. .privacy-dropdown__value {
  1555. background: $color5;
  1556. border-radius: 4px 4px 0 0;
  1557. box-shadow: 0 -4px 4px rgba($color8, 0.1);
  1558. }
  1559. .privacy-dropdown__dropdown {
  1560. display: block;
  1561. box-shadow: 2px 4px 6px rgba($color8, 0.1);
  1562. }
  1563. }
  1564. .search {
  1565. position: relative;
  1566. }
  1567. .search__input {
  1568. padding-right: 30px;
  1569. color: $color2;
  1570. outline: 0;
  1571. box-sizing: border-box;
  1572. display: block;
  1573. width: 100%;
  1574. border: none;
  1575. padding: 10px;
  1576. padding-right: 30px;
  1577. font-family: inherit;
  1578. background: $color1;
  1579. color: $color3;
  1580. font-size: 14px;
  1581. margin: 0;
  1582. &::-moz-focus-inner {
  1583. border: 0;
  1584. }
  1585. &::-moz-focus-inner, &:focus, &:active {
  1586. outline: 0 !important;
  1587. }
  1588. &:focus {
  1589. background: lighten($color1, 4%);
  1590. }
  1591. }
  1592. .search__icon {
  1593. .fa {
  1594. position: absolute;
  1595. top: 10px;
  1596. right: 10px;
  1597. z-index: 2;
  1598. display: inline-block;
  1599. opacity: 0;
  1600. transition: all 100ms linear;
  1601. font-size: 18px;
  1602. width: 18px;
  1603. height: 18px;
  1604. color: $color2;
  1605. cursor: default;
  1606. pointer-events: none;
  1607. &.active {
  1608. pointer-events: auto;
  1609. opacity: 0.3;
  1610. }
  1611. }
  1612. .fa-search {
  1613. transform: translateZ(0) rotate(90deg);
  1614. &.active {
  1615. pointer-events: none;
  1616. transform: translateZ(0) rotate(0deg);
  1617. }
  1618. }
  1619. .fa-times-circle {
  1620. top: 11px;
  1621. transform: translateZ(0) rotate(0deg);
  1622. cursor: pointer;
  1623. &.active {
  1624. transform: translateZ(0) rotate(90deg);
  1625. }
  1626. &:hover {
  1627. color: $color5;
  1628. }
  1629. }
  1630. }
  1631. .search-results__header {
  1632. color: lighten($color1, 26%);
  1633. background: lighten($color1, 2%);
  1634. border-bottom: 1px solid darken($color1, 4%);
  1635. padding: 15px 10px;
  1636. font-size: 14px;
  1637. font-weight: 500;
  1638. }
  1639. .search-results__hashtag {
  1640. display: block;
  1641. padding: 10px;
  1642. color: $color2;
  1643. text-decoration: none;
  1644. &:hover, &:active, &:focus {
  1645. color: lighten($color2, 4%);
  1646. text-decoration: underline;
  1647. }
  1648. }
  1649. .modal-root__overlay {
  1650. position: absolute;
  1651. top: 0;
  1652. left: 0;
  1653. right: 0;
  1654. bottom: 0;
  1655. z-index: 9999;
  1656. opacity: 0;
  1657. background: rgba($color8, 0.7);
  1658. }
  1659. .modal-root__container {
  1660. position: absolute;
  1661. top: 0;
  1662. left: 0;
  1663. width: 100%;
  1664. height: 100%;
  1665. display: flex;
  1666. flex-direction: column;
  1667. align-items: center;
  1668. justify-content: center;
  1669. align-content: space-around;
  1670. z-index: 9999;
  1671. opacity: 0;
  1672. pointer-events: none;
  1673. user-select: none;
  1674. }
  1675. .modal-root__modal {
  1676. pointer-events: auto;
  1677. display: flex;
  1678. }
  1679. .media-modal {
  1680. max-width: 80vw;
  1681. max-height: 80vh;
  1682. position: relative;
  1683. img, video {
  1684. max-width: 80vw;
  1685. max-height: 80vh;
  1686. }
  1687. }
  1688. .boost-modal {
  1689. background: lighten($color2, 8%);
  1690. color: $color1;
  1691. border-radius: 8px;
  1692. overflow: hidden;
  1693. max-width: 90vw;
  1694. width: 480px;
  1695. position: relative;
  1696. flex-direction: column;
  1697. }
  1698. .boost-modal__container {
  1699. padding: 10px;
  1700. .status {
  1701. user-select: text;
  1702. border-bottom: 0;
  1703. }
  1704. }
  1705. .boost-modal__action-bar {
  1706. display: flex;
  1707. background: $color2;
  1708. padding: 10px;
  1709. line-height: 36px;
  1710. & > div {
  1711. flex: 1 1 auto;
  1712. text-align: right;
  1713. color: lighten($color1, 33%);
  1714. padding-right: 10px;
  1715. }
  1716. .button {
  1717. flex: 0 0 auto;
  1718. }
  1719. }