闭社主体 forked from https://github.com/tootsuite/mastodon
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.

2013 lines
32 KiB

7 years ago
7 years ago
8 years ago
8 years ago
8 years ago
8 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. & > ul {
  583. list-style: none;
  584. background: $color2;
  585. padding: 4px 0;
  586. border-radius: 4px;
  587. box-shadow: 0 0 15px rgba($color8, 0.4);
  588. min-width: 140px;
  589. position: relative;
  590. left: -10px;
  591. }
  592. &.dropdown__left {
  593. & > ul {
  594. left: -98px;
  595. }
  596. & > .emoji-dialog {
  597. left: -249px;
  598. }
  599. }
  600. & > ul > li > a {
  601. font-size: 13px;
  602. line-height: 18px;
  603. display: block;
  604. padding: 4px 14px;
  605. box-sizing: border-box;
  606. width: 140px;
  607. text-decoration: none;
  608. background: $color2;
  609. color: $color1;
  610. overflow: hidden;
  611. text-overflow: ellipsis;
  612. white-space: nowrap;
  613. &:focus {
  614. outline: 0;
  615. }
  616. &:hover {
  617. background: $color4;
  618. color: $color2;
  619. }
  620. }
  621. }
  622. .static-content {
  623. padding: 10px;
  624. padding-top: 20px;
  625. color: lighten($color1, 26%);
  626. h1 {
  627. font-size: 16px;
  628. font-weight: 500;
  629. margin-bottom: 40px;
  630. text-align: center;
  631. }
  632. p {
  633. font-size: 13px;
  634. margin-bottom: 20px;
  635. }
  636. }
  637. .columns-area {
  638. flex-direction: row;
  639. justify-content: flex-start;
  640. }
  641. @media screen and (min-width: 360px) {
  642. .columns-area {
  643. padding: 10px;
  644. }
  645. }
  646. .column {
  647. width: 330px;
  648. position: relative;
  649. box-sizing: border-box;
  650. display: flex;
  651. flex-direction: column;
  652. > .scrollable {
  653. background: $color1;
  654. }
  655. }
  656. .ui {
  657. flex: 0 0 auto;
  658. display: flex;
  659. flex-direction: column;
  660. width: 100%;
  661. height: 100%;
  662. background: darken($color1, 7%);
  663. }
  664. .drawer {
  665. width: 300px;
  666. box-sizing: border-box;
  667. display: flex;
  668. flex-direction: column;
  669. overflow-y: hidden;
  670. }
  671. .drawer__tab {
  672. display: block;
  673. flex: 1 1 auto;
  674. padding: 15px;
  675. padding-bottom: 13px;
  676. color: $color3;
  677. text-decoration: none;
  678. text-align: center;
  679. font-size: 16px;
  680. border-bottom: 2px solid transparent;
  681. }
  682. .column, .drawer {
  683. flex: 1 1 100%;
  684. overflow: hidden;
  685. }
  686. @media screen and (min-width: 360px) {
  687. .tabs-bar {
  688. margin: 10px;
  689. margin-bottom: 0;
  690. }
  691. .search {
  692. margin-bottom: 10px;
  693. }
  694. }
  695. @media screen and (max-width: 1024px) {
  696. .column, .drawer {
  697. width: 100%;
  698. padding: 0;
  699. }
  700. .columns-area {
  701. flex-direction: column;
  702. }
  703. .search__input, .autosuggest-textarea__textarea {
  704. font-size: 16px;
  705. }
  706. }
  707. @media screen and (min-width: 1024px) {
  708. .columns-area {
  709. padding: 0;
  710. }
  711. .column, .drawer {
  712. flex: 0 0 auto;
  713. padding: 10px;
  714. padding-left: 5px;
  715. padding-right: 5px;
  716. &:first-child {
  717. padding-left: 10px;
  718. }
  719. &:last-child {
  720. padding-right: 10px;
  721. }
  722. }
  723. }
  724. @media screen and (min-width: 2560px) {
  725. .columns-area {
  726. justify-content: center;
  727. }
  728. .column, .drawer {
  729. width: 350px;
  730. border-radius: 4px;
  731. height: 90vh;
  732. margin-top: 5vh;
  733. }
  734. }
  735. .drawer__pager {
  736. box-sizing: border-box;
  737. padding: 0;
  738. flex-grow: 1;
  739. position: relative;
  740. overflow: hidden;
  741. display: flex;
  742. }
  743. .drawer__inner {
  744. position: absolute;
  745. top: 0;
  746. left: 0;
  747. background: lighten($color1, 13%);
  748. box-sizing: border-box;
  749. padding: 0;
  750. display: flex;
  751. flex-direction: column;
  752. overflow: hidden;
  753. overflow-y: auto;
  754. width: 100%;
  755. height: 100%;
  756. &.darker {
  757. background: $color1;
  758. }
  759. }
  760. .drawer__header {
  761. flex: 0 0 auto;
  762. font-size: 16px;
  763. background: lighten($color1, 8%);
  764. margin-bottom: 10px;
  765. display: flex;
  766. flex-direction: row;
  767. a {
  768. transition: all 100ms ease-in;
  769. &:hover {
  770. background: lighten($color1, 3%);
  771. transition: all 200ms ease-out;
  772. }
  773. }
  774. }
  775. .tabs-bar {
  776. display: flex;
  777. background: lighten($color1, 8%);
  778. flex: 0 0 auto;
  779. overflow-y: auto;
  780. }
  781. .tabs-bar__link {
  782. display: block;
  783. flex: 1 1 auto;
  784. padding: 15px 10px;
  785. color: $color5;
  786. text-decoration: none;
  787. text-align: center;
  788. font-size: 14px;
  789. font-weight: 500;
  790. border-bottom: 2px solid lighten($color1, 8%);
  791. transition: all 200ms linear;
  792. .fa {
  793. font-weight: 400;
  794. font-size: 16px;
  795. }
  796. &.active {
  797. border-bottom: 2px solid $color4;
  798. color: $color4;
  799. }
  800. &:hover, &:focus, &:active {
  801. background: lighten($color1, 14%);
  802. transition: all 100ms linear;
  803. }
  804. span {
  805. margin-left: 5px;
  806. display: none;
  807. }
  808. }
  809. @media screen and (min-width: 600px) {
  810. .tabs-bar__link {
  811. span {
  812. display: inline;
  813. }
  814. }
  815. }
  816. @media screen and (min-width: 1025px) {
  817. .tabs-bar {
  818. display: none;
  819. }
  820. }
  821. .react-autosuggest__container {
  822. position: relative;
  823. }
  824. .react-autosuggest__suggestions-container {
  825. position: absolute;
  826. top: 100%;
  827. width: 100%;
  828. z-index: 99;
  829. box-shadow: 0 0 15px rgba($color8, 0.4);
  830. }
  831. .react-autosuggest__section-title {
  832. background: $color3;
  833. padding: 4px 10px;
  834. font-weight: 500;
  835. cursor: default;
  836. color: $color1;
  837. text-transform: uppercase;
  838. font-size: 11px;
  839. }
  840. .react-autosuggest__suggestions-list {
  841. background: $color2;
  842. color: $color1;
  843. font-size: 14px;
  844. }
  845. .react-autosuggest__suggestion {
  846. padding: 10px;
  847. cursor: pointer;
  848. }
  849. .react-autosuggest__suggestion--focused {
  850. background: $color4;
  851. color: $color5;
  852. }
  853. .scrollable {
  854. overflow-y: scroll;
  855. overflow-x: hidden;
  856. flex: 1 1 auto;
  857. -webkit-overflow-scrolling: touch;
  858. &.optionally-scrollable {
  859. overflow-y: auto;
  860. }
  861. }
  862. .column-back-button {
  863. padding: 15px;
  864. font-size: 16px;
  865. background: lighten($color1, 4%);
  866. flex: 0 0 auto;
  867. cursor: pointer;
  868. color: $color4;
  869. z-index: 3;
  870. &:hover {
  871. text-decoration: underline;
  872. }
  873. }
  874. .react-toggle {
  875. display: inline-block;
  876. position: relative;
  877. cursor: pointer;
  878. background-color: transparent;
  879. border: 0;
  880. padding: 0;
  881. user-select: none;
  882. -webkit-tap-highlight-color: rgba($color8, 0);
  883. -webkit-tap-highlight-color: transparent;
  884. }
  885. .react-toggle-screenreader-only {
  886. border: 0;
  887. clip: rect(0 0 0 0);
  888. height: 1px;
  889. margin: -1px;
  890. overflow: hidden;
  891. padding: 0;
  892. position: absolute;
  893. width: 1px;
  894. }
  895. .react-toggle--disabled {
  896. cursor: not-allowed;
  897. opacity: 0.5;
  898. transition: opacity 0.25s;
  899. }
  900. .react-toggle-track {
  901. width: 50px;
  902. height: 24px;
  903. padding: 0;
  904. border-radius: 30px;
  905. background-color: $color1;
  906. transition: all 0.2s ease;
  907. }
  908. .react-toggle:hover:not(.react-toggle--disabled) .react-toggle-track {
  909. background-color: darken($color1, 10%);
  910. }
  911. .react-toggle--checked .react-toggle-track {
  912. background-color: $color4;
  913. }
  914. .react-toggle--checked:hover:not(.react-toggle--disabled) .react-toggle-track {
  915. background-color: lighten($color4, 10%);
  916. }
  917. .react-toggle-track-check {
  918. position: absolute;
  919. width: 14px;
  920. height: 10px;
  921. top: 0px;
  922. bottom: 0px;
  923. margin-top: auto;
  924. margin-bottom: auto;
  925. line-height: 0;
  926. left: 8px;
  927. opacity: 0;
  928. transition: opacity 0.25s ease;
  929. }
  930. .react-toggle--checked .react-toggle-track-check {
  931. opacity: 1;
  932. transition: opacity 0.25s ease;
  933. }
  934. .react-toggle-track-x {
  935. position: absolute;
  936. width: 10px;
  937. height: 10px;
  938. top: 0px;
  939. bottom: 0px;
  940. margin-top: auto;
  941. margin-bottom: auto;
  942. line-height: 0;
  943. right: 10px;
  944. opacity: 1;
  945. transition: opacity 0.25s ease;
  946. }
  947. .react-toggle--checked .react-toggle-track-x {
  948. opacity: 0;
  949. }
  950. .react-toggle-thumb {
  951. transition: all 0.5s cubic-bezier(0.23, 1, 0.32, 1) 0ms;
  952. position: absolute;
  953. top: 1px;
  954. left: 1px;
  955. width: 22px;
  956. height: 22px;
  957. border: 1px solid $color1;
  958. border-radius: 50%;
  959. background-color: darken($color5, 2%);
  960. box-sizing: border-box;
  961. transition: all 0.25s ease;
  962. }
  963. .react-toggle--checked .react-toggle-thumb {
  964. left: 27px;
  965. border-color: $color4;
  966. }
  967. .column-link {
  968. background: lighten($color1, 8%);
  969. color: $color5;
  970. &:hover {
  971. background: lighten($color1, 11%);
  972. }
  973. }
  974. .autosuggest-textarea, .spoiler-input {
  975. position: relative;
  976. }
  977. .autosuggest-textarea__textarea, .spoiler-input__input {
  978. display: block;
  979. box-sizing: border-box;
  980. width: 100%;
  981. resize: none;
  982. margin: 0;
  983. color: $color1;
  984. padding: 10px;
  985. font-family: inherit;
  986. font-size: 14px;
  987. resize: vertical;
  988. border: 0;
  989. outline: 0;
  990. &:focus {
  991. outline: 0;
  992. }
  993. }
  994. .spoiler-input__input {
  995. border-radius: 4px;
  996. }
  997. .autosuggest-textarea__textarea {
  998. height: 100px;
  999. background: $color5;
  1000. border-radius: 4px 4px 0 0;
  1001. padding-bottom: 0;
  1002. padding-right: 10px + 22px;
  1003. }
  1004. .autosuggest-textarea__suggestions {
  1005. position: absolute;
  1006. top: 100%;
  1007. width: 100%;
  1008. z-index: 99;
  1009. box-shadow: 0 0 15px rgba($color8, 0.4);
  1010. background: $color2;
  1011. color: $color1;
  1012. font-size: 14px;
  1013. }
  1014. .autosuggest-textarea__suggestions__item {
  1015. padding: 10px;
  1016. cursor: pointer;
  1017. &:hover {
  1018. background: darken($color2, 10%);
  1019. }
  1020. &.selected {
  1021. background: $color4;
  1022. color: $color5;
  1023. }
  1024. }
  1025. .getting-started {
  1026. box-sizing: border-box;
  1027. padding-bottom: 235px;
  1028. background: image-url('mastodon-getting-started.png') no-repeat 0 100% local;
  1029. flex: 1 0 auto;
  1030. p {
  1031. color: $color2;
  1032. }
  1033. a {
  1034. color: lighten($color1, 26%);
  1035. }
  1036. }
  1037. .setting-text {
  1038. color: $color3;
  1039. background: transparent;
  1040. border: none;
  1041. border-bottom: 2px solid $color3;
  1042. &:focus, &:active {
  1043. color: $color5;
  1044. border-bottom-color: $color4;
  1045. }
  1046. }
  1047. @import 'boost';
  1048. button.icon-button i.fa-retweet {
  1049. height: 19px;
  1050. width: 22px;
  1051. background-position: 0 0;
  1052. transition: background-position 0.9s steps(10);
  1053. transition-duration: 0s;
  1054. &::before {
  1055. display: none !important;
  1056. }
  1057. }
  1058. button.icon-button.active i.fa-retweet {
  1059. transition-duration: 0.9s;
  1060. background-position: 0 100%;
  1061. }
  1062. .status-card {
  1063. display: flex;
  1064. cursor: pointer;
  1065. font-size: 14px;
  1066. border: 1px solid lighten($color1, 8%);
  1067. border-radius: 4px;
  1068. color: lighten($color1, 26%);
  1069. margin-top: 14px;
  1070. text-decoration: none;
  1071. overflow: hidden;
  1072. &:hover {
  1073. background: lighten($color1, 8%);
  1074. }
  1075. }
  1076. .status-card__title {
  1077. display: block;
  1078. font-weight: 500;
  1079. margin-bottom: 5px;
  1080. color: $color3;
  1081. overflow: hidden;
  1082. text-overflow: ellipsis;
  1083. white-space: nowrap;
  1084. }
  1085. .status-card__description {
  1086. color: $color3;
  1087. }
  1088. .status-card__image {
  1089. flex: 0 0 100px;
  1090. background: lighten($color1, 8%);
  1091. }
  1092. .load-more {
  1093. display: block;
  1094. color: lighten($color1, 26%);
  1095. text-align: center;
  1096. padding: 15px;
  1097. text-decoration: none;
  1098. &:hover {
  1099. background: lighten($color1, 2%);
  1100. }
  1101. }
  1102. .missing-indicator {
  1103. text-align: center;
  1104. font-size: 16px;
  1105. font-weight: 500;
  1106. color: lighten($color1, 16%);
  1107. padding-top: 210px;
  1108. background: image-url('mastodon-not-found.png') no-repeat center -50px;
  1109. cursor: default;
  1110. }
  1111. .column-header {
  1112. padding: 15px;
  1113. font-size: 16px;
  1114. background: lighten($color1, 4%);
  1115. flex: 0 0 auto;
  1116. cursor: pointer;
  1117. position: relative;
  1118. z-index: 2;
  1119. &.active {
  1120. box-shadow: 0 1px 0 rgba($color4, 0.3);
  1121. }
  1122. &.active .fa {
  1123. color: $color4;
  1124. text-shadow: 0 0 10px rgba($color4, 0.4);
  1125. }
  1126. }
  1127. .loading-indicator {
  1128. color: $color2;
  1129. }
  1130. .collapsable-collapsed {
  1131. color: $color3;
  1132. background: lighten($color1, 4%);
  1133. }
  1134. .collapsable {
  1135. color: $color5;
  1136. background: lighten($color1, 8%);
  1137. &:hover {
  1138. color: $color5;
  1139. background: lighten($color1, 8%);
  1140. }
  1141. }
  1142. .media-spoiler {
  1143. background: $color8;
  1144. color: $color5;
  1145. }
  1146. .modal-container--preloader {
  1147. background: lighten($color1, 8%);
  1148. }
  1149. .account--panel {
  1150. background: lighten($color1, 4%);
  1151. border-top: 1px solid lighten($color1, 8%);
  1152. border-bottom: 1px solid lighten($color1, 8%);
  1153. }
  1154. .column-settings--outer {
  1155. background: lighten($color1, 8%);
  1156. }
  1157. .column-settings--section {
  1158. color: $color3;
  1159. }
  1160. .modal-container__nav {
  1161. color: $color5;
  1162. }
  1163. .account--follows-info {
  1164. color: $color5;
  1165. }
  1166. .setting-toggle {
  1167. color: $color3;
  1168. }
  1169. .report__target {
  1170. border-bottom: 1px solid lighten($color1, 4%);
  1171. color: $color2;
  1172. padding-bottom: 10px;
  1173. strong {
  1174. display: block;
  1175. color: $color5;
  1176. font-weight: 500;
  1177. }
  1178. }
  1179. .report__textarea {
  1180. background: transparent;
  1181. box-sizing: border-box;
  1182. border: 0;
  1183. border-bottom: 2px solid $color3;
  1184. border-radius: 2px 2px 0 0;
  1185. padding: 7px 4px;
  1186. font-size: 14px;
  1187. color: $color5;
  1188. display: block;
  1189. width: 100%;
  1190. outline: 0;
  1191. font-family: inherit;
  1192. resize: vertical;
  1193. &:active, &:focus {
  1194. border-bottom-color: $color4;
  1195. background: rgba($color8, 0.1);
  1196. }
  1197. }
  1198. .empty-column-indicator {
  1199. color: lighten($color1, 20%);
  1200. background: $color1;
  1201. text-align: center;
  1202. padding: 20px;
  1203. font-size: 15px;
  1204. font-weight: 400;
  1205. cursor: default;
  1206. display: flex;
  1207. flex: 1 1 auto;
  1208. align-items: center;
  1209. a {
  1210. color: $color4;
  1211. text-decoration: none;
  1212. &:hover {
  1213. text-decoration: underline;
  1214. }
  1215. }
  1216. }
  1217. .status-list__unread-indicator, .notifications__unread-indicator {
  1218. position: absolute;
  1219. top: 35px;
  1220. left: 0;
  1221. right: 0;
  1222. margin: 0 auto;
  1223. width: 60%;
  1224. pointer-events: none;
  1225. height: 28px;
  1226. z-index: 1;
  1227. background: radial-gradient(ellipse, rgba($color4, 0.23) 0%, rgba($color4, 0) 60%);
  1228. }
  1229. .emoji-dialog {
  1230. width: 280px;
  1231. height: 220px;
  1232. background: darken($color3, 10%);
  1233. box-sizing: border-box;
  1234. border-radius: 2px;
  1235. overflow: hidden;
  1236. position: relative;
  1237. box-shadow: 0 0 15px rgba($color8, 0.4);
  1238. .emojione {
  1239. margin: 0;
  1240. width: 100%;
  1241. height: auto;
  1242. }
  1243. .emoji-dialog-header {
  1244. padding: 0 10px;
  1245. background-color: $color3;
  1246. ul {
  1247. padding: 0;
  1248. margin: 0;
  1249. list-style: none;
  1250. }
  1251. li {
  1252. display: inline-block;
  1253. box-sizing: border-box;
  1254. height: 42px;
  1255. padding: 9px 5px;
  1256. cursor: pointer;
  1257. img, svg {
  1258. width: 22px;
  1259. height: 22px;
  1260. filter: grayscale(100%);
  1261. }
  1262. &.active {
  1263. background: lighten($color3, 6%);
  1264. img, svg {
  1265. filter: grayscale(0);
  1266. }
  1267. }
  1268. }
  1269. }
  1270. .emoji-row {
  1271. box-sizing: border-box;
  1272. overflow-y: hidden;
  1273. padding-left: 10px;
  1274. .emoji {
  1275. display: inline-block;
  1276. padding: 5px;
  1277. border-radius: 4px;
  1278. }
  1279. }
  1280. .emoji-category-header {
  1281. box-sizing: border-box;
  1282. overflow-y: hidden;
  1283. padding: 8px 16px 0;
  1284. display: table;
  1285. > * {
  1286. display: table-cell;
  1287. vertical-align: middle;
  1288. }
  1289. }
  1290. .emoji-category-title {
  1291. font-size: 14px;
  1292. font-family: sans-serif;
  1293. font-weight: normal;
  1294. color: $color1;
  1295. cursor: default;
  1296. }
  1297. .emoji-category-heading-decoration {
  1298. text-align: right;
  1299. }
  1300. .modifiers {
  1301. list-style: none;
  1302. padding: 0;
  1303. margin: 0;
  1304. vertical-align: middle;
  1305. white-space: nowrap;
  1306. margin-top: 4px;
  1307. li {
  1308. display: inline-block;
  1309. padding: 0 2px;
  1310. &:last-of-type {
  1311. padding-right: 0;
  1312. }
  1313. }
  1314. .modifier {
  1315. display: inline-block;
  1316. border-radius: 10px;
  1317. width: 15px;
  1318. height: 15px;
  1319. position: relative;
  1320. cursor: pointer;
  1321. &.active:after {
  1322. content: "";
  1323. display: block;
  1324. position: absolute;
  1325. width: 7px;
  1326. height: 7px;
  1327. border-radius: 10px;
  1328. border: 2px solid $color1;
  1329. top: 2px;
  1330. left: 2px;
  1331. }
  1332. }
  1333. }
  1334. .emoji-search-wrapper {
  1335. padding: 6px 16px;
  1336. }
  1337. .emoji-search {
  1338. font-size: 12px;
  1339. padding: 6px 4px;
  1340. width: 100%;
  1341. border: 1px solid #ddd;
  1342. border-radius: 4px;
  1343. }
  1344. .emoji-categories-wrapper {
  1345. position: absolute;
  1346. top: 42px;
  1347. bottom: 0;
  1348. left: 0;
  1349. right: 0;
  1350. }
  1351. .emoji-search-wrapper + .emoji-categories-wrapper {
  1352. top: 83px;
  1353. }
  1354. .emoji-row .emoji:hover {
  1355. background: lighten($color2, 3%);
  1356. }
  1357. .emoji {
  1358. width: 22px;
  1359. height: 22px;
  1360. cursor: pointer;
  1361. &:focus {
  1362. outline: 0;
  1363. }
  1364. }
  1365. }
  1366. .autosuggest-status {
  1367. overflow: hidden;
  1368. white-space: nowrap;
  1369. text-overflow: ellipsis;
  1370. strong {
  1371. font-weight: 500;
  1372. }
  1373. }
  1374. .upload-area {
  1375. position: absolute;
  1376. top: 0;
  1377. left: 0;
  1378. width: 100%;
  1379. height: 100%;
  1380. visibility: hidden;
  1381. background: rgba($color8, 0.8);
  1382. display: flex;
  1383. align-items: center;
  1384. justify-content: center;
  1385. opacity: 0;
  1386. z-index: 2000;
  1387. * {
  1388. pointer-events: none;
  1389. }
  1390. }
  1391. .upload-area__drop {
  1392. width: 320px;
  1393. height: 160px;
  1394. display: flex;
  1395. box-sizing: border-box;
  1396. position: relative;
  1397. padding: 8px;
  1398. }
  1399. .upload-area__background {
  1400. position: absolute;
  1401. top: 0;
  1402. right: 0;
  1403. bottom: 0;
  1404. left: 0;
  1405. z-index: -1;
  1406. border-radius: 4px;
  1407. background: $color1;
  1408. box-shadow: 0 0 5px rgba($color8, 0.2);
  1409. }
  1410. .upload-area__content {
  1411. flex: 1;
  1412. display: flex;
  1413. align-items: center;
  1414. justify-content: center;
  1415. color: $color2;
  1416. font-size: 18px;
  1417. font-weight: 500;
  1418. border: 2px dashed lighten($color1, 26%);
  1419. border-radius: 4px;
  1420. }
  1421. .upload-progress {
  1422. padding: 10px;
  1423. color: lighten($color1, 26%);
  1424. overflow: hidden;
  1425. display: flex;
  1426. .fa {
  1427. font-size: 34px;
  1428. margin-right: 10px;
  1429. }
  1430. span {
  1431. font-size: 12px;
  1432. text-transform: uppercase;
  1433. font-weight: 500;
  1434. display: block;
  1435. }
  1436. }
  1437. .upload-progress__backdrop {
  1438. width: 100%;
  1439. height: 6px;
  1440. border-radius: 6px;
  1441. background: lighten($color1, 26%);
  1442. position: relative;
  1443. margin-top: 5px;
  1444. }
  1445. .upload-progress__tracker {
  1446. position: absolute;
  1447. left: 0;
  1448. top: 0;
  1449. height: 6px;
  1450. background: $color4;
  1451. border-radius: 6px;
  1452. }
  1453. .emoji-button {
  1454. outline: 0;
  1455. &:active, &:focus {
  1456. outline: 0 !important;
  1457. }
  1458. img {
  1459. filter: grayscale(100%);
  1460. opacity: 0.8;
  1461. display: block;
  1462. margin: 0;
  1463. width: 22px;
  1464. height: 22px;
  1465. margin-top: 2px;
  1466. }
  1467. &:hover, &:active, &:focus {
  1468. img {
  1469. opacity: 1;
  1470. filter: none;
  1471. }
  1472. }
  1473. }
  1474. .dropdown--active .emoji-button img {
  1475. opacity: 1;
  1476. filter: none;
  1477. }
  1478. .privacy-dropdown {
  1479. position: relative;
  1480. }
  1481. .privacy-dropdown__dropdown {
  1482. display: none;
  1483. position: absolute;
  1484. left: 0;
  1485. top: 27px;
  1486. width: 230px;
  1487. background: $color5;
  1488. border-radius: 0 4px 4px 4px;
  1489. z-index: 2;
  1490. overflow: hidden;
  1491. }
  1492. .privacy-dropdown__option {
  1493. color: $color1;
  1494. padding: 10px;
  1495. cursor: pointer;
  1496. display: flex;
  1497. &:hover, &.active {
  1498. background: $color4;
  1499. color: $color5;
  1500. .privacy-dropdown__option__content {
  1501. color: $color5;
  1502. strong {
  1503. color: $color5;
  1504. }
  1505. }
  1506. }
  1507. &.active:hover {
  1508. background: lighten($color4, 4%);
  1509. }
  1510. }
  1511. .privacy-dropdown__option__icon {
  1512. display: flex;
  1513. align-items: center;
  1514. justify-content: center;
  1515. margin-right: 10px;
  1516. }
  1517. .privacy-dropdown__option__content {
  1518. flex: 1 1 auto;
  1519. color: darken($color3, 24%);
  1520. strong {
  1521. font-weight: 500;
  1522. display: block;
  1523. color: $color1;
  1524. }
  1525. }
  1526. .privacy-dropdown.active {
  1527. .privacy-dropdown__value {
  1528. background: $color5;
  1529. border-radius: 4px 4px 0 0;
  1530. box-shadow: 0 -4px 4px rgba($color8, 0.1);
  1531. }
  1532. .privacy-dropdown__dropdown {
  1533. display: block;
  1534. box-shadow: 2px 4px 6px rgba($color8, 0.1);
  1535. }
  1536. }
  1537. .search {
  1538. position: relative;
  1539. }
  1540. .search__input {
  1541. padding-right: 30px;
  1542. color: $color2;
  1543. outline: 0;
  1544. box-sizing: border-box;
  1545. display: block;
  1546. width: 100%;
  1547. border: none;
  1548. padding: 10px;
  1549. padding-right: 30px;
  1550. font-family: inherit;
  1551. background: $color1;
  1552. color: $color3;
  1553. font-size: 14px;
  1554. margin: 0;
  1555. &::-moz-focus-inner {
  1556. border: 0;
  1557. }
  1558. &::-moz-focus-inner, &:focus, &:active {
  1559. outline: 0 !important;
  1560. }
  1561. &:focus {
  1562. background: lighten($color1, 4%);
  1563. }
  1564. }
  1565. .search__icon {
  1566. .fa {
  1567. position: absolute;
  1568. top: 10px;
  1569. right: 10px;
  1570. z-index: 2;
  1571. display: inline-block;
  1572. opacity: 0;
  1573. transition: all 100ms linear;
  1574. font-size: 18px;
  1575. width: 18px;
  1576. height: 18px;
  1577. color: $color2;
  1578. cursor: default;
  1579. pointer-events: none;
  1580. &.active {
  1581. pointer-events: auto;
  1582. opacity: 0.3;
  1583. }
  1584. }
  1585. .fa-search {
  1586. transform: translateZ(0) rotate(90deg);
  1587. &.active {
  1588. pointer-events: none;
  1589. transform: translateZ(0) rotate(0deg);
  1590. }
  1591. }
  1592. .fa-times-circle {
  1593. top: 11px;
  1594. transform: translateZ(0) rotate(0deg);
  1595. cursor: pointer;
  1596. &.active {
  1597. transform: translateZ(0) rotate(90deg);
  1598. }
  1599. &:hover {
  1600. color: $color5;
  1601. }
  1602. }
  1603. }
  1604. .search-results__header {
  1605. color: lighten($color1, 26%);
  1606. background: lighten($color1, 2%);
  1607. border-bottom: 1px solid darken($color1, 4%);
  1608. padding: 15px 10px;
  1609. font-size: 14px;
  1610. font-weight: 500;
  1611. }
  1612. .search-results__hashtag {
  1613. display: block;
  1614. padding: 10px;
  1615. color: $color2;
  1616. text-decoration: none;
  1617. &:hover, &:active, &:focus {
  1618. color: lighten($color2, 4%);
  1619. text-decoration: underline;
  1620. }
  1621. }
  1622. .modal-root__overlay {
  1623. position: absolute;
  1624. top: 0;
  1625. left: 0;
  1626. right: 0;
  1627. bottom: 0;
  1628. z-index: 9999;
  1629. opacity: 0;
  1630. background: rgba($color8, 0.7);
  1631. }
  1632. .modal-root__container {
  1633. position: absolute;
  1634. top: 0;
  1635. left: 0;
  1636. width: 100%;
  1637. height: 100%;
  1638. display: flex;
  1639. flex-direction: column;
  1640. align-items: center;
  1641. justify-content: center;
  1642. align-content: space-around;
  1643. z-index: 9999;
  1644. opacity: 0;
  1645. pointer-events: none;
  1646. user-select: none;
  1647. }
  1648. .modal-root__modal {
  1649. pointer-events: auto;
  1650. display: flex;
  1651. }
  1652. .media-modal {
  1653. max-width: 80vw;
  1654. max-height: 80vh;
  1655. position: relative;
  1656. img, video {
  1657. max-width: 80vw;
  1658. max-height: 80vh;
  1659. }
  1660. }
  1661. .boost-modal {
  1662. background: lighten($color2, 8%);
  1663. color: $color1;
  1664. border-radius: 8px;
  1665. overflow: hidden;
  1666. max-width: 90vw;
  1667. width: 480px;
  1668. position: relative;
  1669. flex-direction: column;
  1670. }
  1671. .boost-modal__container {
  1672. padding: 10px;
  1673. .status {
  1674. user-select: text;
  1675. border-bottom: 0;
  1676. }
  1677. }
  1678. .boost-modal__action-bar {
  1679. display: flex;
  1680. background: $color2;
  1681. padding: 10px;
  1682. line-height: 36px;
  1683. & > div {
  1684. flex: 1 1 auto;
  1685. text-align: right;
  1686. color: lighten($color1, 33%);
  1687. padding-right: 10px;
  1688. }
  1689. .button {
  1690. flex: 0 0 auto;
  1691. }
  1692. }