闭社主体 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.

885 lines
16 KiB

  1. .container-alt {
  2. width: 700px;
  3. margin: 0 auto;
  4. margin-top: 40px;
  5. @media screen and (max-width: 740px) {
  6. width: 100%;
  7. margin: 0;
  8. }
  9. }
  10. .logo-container {
  11. margin: 100px auto 50px;
  12. @media screen and (max-width: 500px) {
  13. margin: 40px auto 0;
  14. }
  15. h1 {
  16. display: flex;
  17. justify-content: center;
  18. align-items: center;
  19. svg {
  20. fill: $primary-text-color;
  21. height: 42px;
  22. margin-right: 10px;
  23. }
  24. a {
  25. display: flex;
  26. justify-content: center;
  27. align-items: center;
  28. color: $primary-text-color;
  29. text-decoration: none;
  30. outline: 0;
  31. padding: 12px 16px;
  32. line-height: 32px;
  33. font-family: $font-display, sans-serif;
  34. font-weight: 500;
  35. font-size: 14px;
  36. }
  37. }
  38. }
  39. .compose-standalone {
  40. .compose-form {
  41. width: 400px;
  42. margin: 0 auto;
  43. padding: 20px 0;
  44. margin-top: 40px;
  45. box-sizing: border-box;
  46. @media screen and (max-width: 400px) {
  47. width: 100%;
  48. margin-top: 0;
  49. padding: 20px;
  50. }
  51. }
  52. }
  53. .account-header {
  54. width: 400px;
  55. margin: 0 auto;
  56. display: flex;
  57. font-size: 13px;
  58. line-height: 18px;
  59. box-sizing: border-box;
  60. padding: 20px 0;
  61. padding-bottom: 0;
  62. margin-bottom: -30px;
  63. margin-top: 40px;
  64. @media screen and (max-width: 440px) {
  65. width: 100%;
  66. margin: 0;
  67. margin-bottom: 10px;
  68. padding: 20px;
  69. padding-bottom: 0;
  70. }
  71. .avatar {
  72. width: 40px;
  73. height: 40px;
  74. margin-right: 8px;
  75. img {
  76. width: 100%;
  77. height: 100%;
  78. display: block;
  79. margin: 0;
  80. border-radius: 4px;
  81. }
  82. }
  83. .name {
  84. flex: 1 1 auto;
  85. color: $secondary-text-color;
  86. width: calc(100% - 88px);
  87. .username {
  88. display: block;
  89. font-weight: 500;
  90. text-overflow: ellipsis;
  91. overflow: hidden;
  92. }
  93. }
  94. .logout-link {
  95. display: block;
  96. font-size: 32px;
  97. line-height: 40px;
  98. margin-left: 8px;
  99. }
  100. }
  101. .grid-3 {
  102. display: grid;
  103. grid-gap: 10px;
  104. grid-template-columns: 3fr 1fr;
  105. grid-auto-columns: 25%;
  106. grid-auto-rows: max-content;
  107. .column-0 {
  108. grid-column: 1 / 3;
  109. grid-row: 1;
  110. }
  111. .column-1 {
  112. grid-column: 1;
  113. grid-row: 2;
  114. }
  115. .column-2 {
  116. grid-column: 2;
  117. grid-row: 2;
  118. }
  119. .column-3 {
  120. grid-column: 1 / 3;
  121. grid-row: 3;
  122. }
  123. @media screen and (max-width: $no-gap-breakpoint) {
  124. grid-gap: 0;
  125. grid-template-columns: minmax(0, 100%);
  126. .column-0 {
  127. grid-column: 1;
  128. }
  129. .column-1 {
  130. grid-column: 1;
  131. grid-row: 3;
  132. }
  133. .column-2 {
  134. grid-column: 1;
  135. grid-row: 2;
  136. }
  137. .column-3 {
  138. grid-column: 1;
  139. grid-row: 4;
  140. }
  141. }
  142. }
  143. .grid-4 {
  144. display: grid;
  145. grid-gap: 10px;
  146. grid-template-columns: repeat(4, minmax(0, 1fr));
  147. grid-auto-columns: 25%;
  148. grid-auto-rows: max-content;
  149. .column-0 {
  150. grid-column: 1 / 5;
  151. grid-row: 1;
  152. }
  153. .column-1 {
  154. grid-column: 1 / 4;
  155. grid-row: 2;
  156. }
  157. .column-2 {
  158. grid-column: 4;
  159. grid-row: 2;
  160. }
  161. .column-3 {
  162. grid-column: 2 / 5;
  163. grid-row: 3;
  164. }
  165. .column-4 {
  166. grid-column: 1;
  167. grid-row: 3;
  168. }
  169. .landing-page__call-to-action {
  170. min-height: 100%;
  171. }
  172. .flash-message {
  173. margin-bottom: 10px;
  174. }
  175. @media screen and (max-width: 738px) {
  176. grid-template-columns: minmax(0, 50%) minmax(0, 50%);
  177. .landing-page__call-to-action {
  178. padding: 20px;
  179. display: flex;
  180. align-items: center;
  181. justify-content: center;
  182. }
  183. .row__information-board {
  184. width: 100%;
  185. justify-content: center;
  186. align-items: center;
  187. }
  188. .row__mascot {
  189. display: none;
  190. }
  191. }
  192. @media screen and (max-width: $no-gap-breakpoint) {
  193. grid-gap: 0;
  194. grid-template-columns: minmax(0, 100%);
  195. .column-0 {
  196. grid-column: 1;
  197. }
  198. .column-1 {
  199. grid-column: 1;
  200. grid-row: 3;
  201. }
  202. .column-2 {
  203. grid-column: 1;
  204. grid-row: 2;
  205. }
  206. .column-3 {
  207. grid-column: 1;
  208. grid-row: 5;
  209. }
  210. .column-4 {
  211. grid-column: 1;
  212. grid-row: 4;
  213. }
  214. }
  215. }
  216. .public-layout {
  217. @media screen and (max-width: $no-gap-breakpoint) {
  218. padding-top: 48px;
  219. }
  220. .container {
  221. max-width: 960px;
  222. @media screen and (max-width: $no-gap-breakpoint) {
  223. padding: 0;
  224. }
  225. }
  226. .header {
  227. background: lighten($ui-base-color, 8%);
  228. box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
  229. border-radius: 4px;
  230. height: 48px;
  231. margin: 10px 0;
  232. display: flex;
  233. align-items: stretch;
  234. justify-content: center;
  235. flex-wrap: nowrap;
  236. overflow: hidden;
  237. @media screen and (max-width: $no-gap-breakpoint) {
  238. position: fixed;
  239. width: 100%;
  240. top: 0;
  241. left: 0;
  242. margin: 0;
  243. border-radius: 0;
  244. box-shadow: none;
  245. z-index: 110;
  246. }
  247. & > div {
  248. flex: 1 1 33.3%;
  249. min-height: 1px;
  250. }
  251. .nav-left {
  252. display: flex;
  253. align-items: stretch;
  254. justify-content: flex-start;
  255. flex-wrap: nowrap;
  256. }
  257. .nav-center {
  258. display: flex;
  259. align-items: stretch;
  260. justify-content: center;
  261. flex-wrap: nowrap;
  262. }
  263. .nav-right {
  264. display: flex;
  265. align-items: stretch;
  266. justify-content: flex-end;
  267. flex-wrap: nowrap;
  268. }
  269. .brand {
  270. display: block;
  271. padding: 15px;
  272. svg {
  273. display: block;
  274. height: 18px;
  275. width: auto;
  276. position: relative;
  277. bottom: -2px;
  278. fill: $primary-text-color;
  279. @media screen and (max-width: $no-gap-breakpoint) {
  280. height: 20px;
  281. }
  282. }
  283. &:hover,
  284. &:focus,
  285. &:active {
  286. background: lighten($ui-base-color, 12%);
  287. }
  288. }
  289. .nav-link {
  290. display: flex;
  291. align-items: center;
  292. padding: 0 1rem;
  293. font-size: 12px;
  294. font-weight: 500;
  295. text-decoration: none;
  296. color: $darker-text-color;
  297. white-space: nowrap;
  298. text-align: center;
  299. &:hover,
  300. &:focus,
  301. &:active {
  302. text-decoration: underline;
  303. color: $primary-text-color;
  304. }
  305. @media screen and (max-width: 550px) {
  306. &.optional {
  307. display: none;
  308. }
  309. }
  310. }
  311. .nav-button {
  312. background: lighten($ui-base-color, 16%);
  313. margin: 8px;
  314. margin-left: 0;
  315. border-radius: 4px;
  316. &:hover,
  317. &:focus,
  318. &:active {
  319. text-decoration: none;
  320. background: lighten($ui-base-color, 20%);
  321. }
  322. }
  323. }
  324. $no-columns-breakpoint: 600px;
  325. .grid {
  326. display: grid;
  327. grid-gap: 10px;
  328. grid-template-columns: minmax(300px, 3fr) minmax(298px, 1fr);
  329. grid-auto-columns: 25%;
  330. grid-auto-rows: max-content;
  331. .column-0 {
  332. grid-row: 1;
  333. grid-column: 1;
  334. }
  335. .column-1 {
  336. grid-row: 1;
  337. grid-column: 2;
  338. }
  339. @media screen and (max-width: $no-columns-breakpoint) {
  340. grid-template-columns: 100%;
  341. grid-gap: 0;
  342. .column-1 {
  343. display: none;
  344. }
  345. }
  346. }
  347. .public-account-header {
  348. overflow: hidden;
  349. margin-bottom: 10px;
  350. box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
  351. &.inactive {
  352. opacity: 0.5;
  353. .public-account-header__image,
  354. .avatar {
  355. filter: grayscale(100%);
  356. }
  357. .logo-button {
  358. background-color: $secondary-text-color;
  359. }
  360. }
  361. &__image {
  362. border-radius: 4px 4px 0 0;
  363. overflow: hidden;
  364. height: 300px;
  365. position: relative;
  366. background: darken($ui-base-color, 12%);
  367. &::after {
  368. content: "";
  369. display: block;
  370. position: absolute;
  371. width: 100%;
  372. height: 100%;
  373. box-shadow: inset 0 -1px 1px 1px rgba($base-shadow-color, 0.15);
  374. top: 0;
  375. left: 0;
  376. }
  377. img {
  378. object-fit: cover;
  379. display: block;
  380. width: 100%;
  381. height: 100%;
  382. margin: 0;
  383. border-radius: 4px 4px 0 0;
  384. }
  385. @media screen and (max-width: 600px) {
  386. height: 200px;
  387. }
  388. }
  389. &--no-bar {
  390. margin-bottom: 0;
  391. .public-account-header__image,
  392. .public-account-header__image img {
  393. border-radius: 4px;
  394. @media screen and (max-width: $no-gap-breakpoint) {
  395. border-radius: 0;
  396. }
  397. }
  398. }
  399. @media screen and (max-width: $no-gap-breakpoint) {
  400. margin-bottom: 0;
  401. box-shadow: none;
  402. &__image::after {
  403. display: none;
  404. }
  405. &__image,
  406. &__image img {
  407. border-radius: 0;
  408. }
  409. }
  410. &__bar {
  411. position: relative;
  412. margin-top: -80px;
  413. display: flex;
  414. justify-content: flex-start;
  415. &::before {
  416. content: "";
  417. display: block;
  418. background: lighten($ui-base-color, 4%);
  419. position: absolute;
  420. bottom: 0;
  421. left: 0;
  422. right: 0;
  423. height: 60px;
  424. border-radius: 0 0 4px 4px;
  425. z-index: -1;
  426. }
  427. .avatar {
  428. display: block;
  429. width: 120px;
  430. height: 120px;
  431. padding-left: 20px - 4px;
  432. flex: 0 0 auto;
  433. img {
  434. display: block;
  435. width: 100%;
  436. height: 100%;
  437. margin: 0;
  438. border-radius: 50%;
  439. border: 4px solid lighten($ui-base-color, 4%);
  440. background: darken($ui-base-color, 8%);
  441. }
  442. }
  443. @media screen and (max-width: 600px) {
  444. margin-top: 0;
  445. background: lighten($ui-base-color, 4%);
  446. border-radius: 0 0 4px 4px;
  447. padding: 5px;
  448. &::before {
  449. display: none;
  450. }
  451. .avatar {
  452. width: 48px;
  453. height: 48px;
  454. padding: 7px 0;
  455. padding-left: 10px;
  456. img {
  457. border: 0;
  458. border-radius: 4px;
  459. }
  460. @media screen and (max-width: 360px) {
  461. display: none;
  462. }
  463. }
  464. }
  465. @media screen and (max-width: $no-gap-breakpoint) {
  466. border-radius: 0;
  467. }
  468. @media screen and (max-width: $no-columns-breakpoint) {
  469. flex-wrap: wrap;
  470. }
  471. }
  472. &__tabs {
  473. flex: 1 1 auto;
  474. margin-left: 20px;
  475. &__name {
  476. padding-top: 20px;
  477. padding-bottom: 8px;
  478. h1 {
  479. font-size: 20px;
  480. line-height: 18px * 1.5;
  481. color: $primary-text-color;
  482. font-weight: 500;
  483. overflow: hidden;
  484. white-space: nowrap;
  485. text-overflow: ellipsis;
  486. text-shadow: 1px 1px 1px $base-shadow-color;
  487. small {
  488. display: block;
  489. font-size: 14px;
  490. color: $primary-text-color;
  491. font-weight: 400;
  492. overflow: hidden;
  493. text-overflow: ellipsis;
  494. }
  495. }
  496. }
  497. @media screen and (max-width: 600px) {
  498. margin-left: 15px;
  499. display: flex;
  500. justify-content: space-between;
  501. align-items: center;
  502. &__name {
  503. padding-top: 0;
  504. padding-bottom: 0;
  505. h1 {
  506. font-size: 16px;
  507. line-height: 24px;
  508. text-shadow: none;
  509. small {
  510. color: $darker-text-color;
  511. }
  512. }
  513. }
  514. }
  515. &__tabs {
  516. display: flex;
  517. justify-content: flex-start;
  518. align-items: stretch;
  519. height: 58px;
  520. .details-counters {
  521. display: flex;
  522. flex-direction: row;
  523. min-width: 300px;
  524. }
  525. @media screen and (max-width: $no-columns-breakpoint) {
  526. .details-counters {
  527. display: none;
  528. }
  529. }
  530. .counter {
  531. width: 33.3%;
  532. box-sizing: border-box;
  533. flex: 0 0 auto;
  534. color: $darker-text-color;
  535. padding: 10px;
  536. border-right: 1px solid lighten($ui-base-color, 4%);
  537. cursor: default;
  538. text-align: center;
  539. position: relative;
  540. a {
  541. display: block;
  542. }
  543. &:last-child {
  544. border-right: 0;
  545. }
  546. &::after {
  547. display: block;
  548. content: "";
  549. position: absolute;
  550. bottom: 0;
  551. left: 0;
  552. width: 100%;
  553. border-bottom: 4px solid $ui-primary-color;
  554. opacity: 0.5;
  555. transition: all 400ms ease;
  556. }
  557. &.active {
  558. &::after {
  559. border-bottom: 4px solid $highlight-text-color;
  560. opacity: 1;
  561. }
  562. &.inactive::after {
  563. border-bottom-color: $secondary-text-color;
  564. }
  565. }
  566. &:hover {
  567. &::after {
  568. opacity: 1;
  569. transition-duration: 100ms;
  570. }
  571. }
  572. a {
  573. text-decoration: none;
  574. color: inherit;
  575. }
  576. .counter-label {
  577. font-size: 12px;
  578. display: block;
  579. }
  580. .counter-number {
  581. font-weight: 500;
  582. font-size: 18px;
  583. margin-bottom: 5px;
  584. color: $primary-text-color;
  585. font-family: $font-display, sans-serif;
  586. }
  587. }
  588. .spacer {
  589. flex: 1 1 auto;
  590. height: 1px;
  591. }
  592. &__buttons {
  593. padding: 7px 8px;
  594. }
  595. }
  596. }
  597. &__extra {
  598. display: none;
  599. margin-top: 4px;
  600. .public-account-bio {
  601. border-radius: 0;
  602. box-shadow: none;
  603. background: transparent;
  604. margin: 0 -5px;
  605. .account__header__fields {
  606. border-top: 1px solid lighten($ui-base-color, 12%);
  607. }
  608. .roles {
  609. display: none;
  610. }
  611. }
  612. &__links {
  613. margin-top: -15px;
  614. font-size: 14px;
  615. color: $darker-text-color;
  616. a {
  617. display: inline-block;
  618. color: $darker-text-color;
  619. text-decoration: none;
  620. padding: 15px;
  621. font-weight: 500;
  622. strong {
  623. font-weight: 700;
  624. color: $primary-text-color;
  625. }
  626. }
  627. }
  628. @media screen and (max-width: $no-columns-breakpoint) {
  629. display: block;
  630. flex: 100%;
  631. }
  632. }
  633. }
  634. .account__section-headline {
  635. border-radius: 4px 4px 0 0;
  636. @media screen and (max-width: $no-gap-breakpoint) {
  637. border-radius: 0;
  638. }
  639. }
  640. .detailed-status__meta {
  641. margin-top: 25px;
  642. }
  643. .public-account-bio {
  644. background: lighten($ui-base-color, 8%);
  645. box-shadow: 0 0 15px rgba($base-shadow-color, 0.2);
  646. border-radius: 4px;
  647. overflow: hidden;
  648. margin-bottom: 10px;
  649. @media screen and (max-width: $no-gap-breakpoint) {
  650. box-shadow: none;
  651. margin-bottom: 0;
  652. border-radius: 0;
  653. }
  654. .account__header__fields {
  655. margin: 0;
  656. border-top: 0;
  657. a {
  658. color: lighten($ui-highlight-color, 8%);
  659. }
  660. dl:first-child .verified {
  661. border-radius: 0 4px 0 0;
  662. }
  663. .verified a {
  664. color: $valid-value-color;
  665. }
  666. }
  667. .account__header__content {
  668. padding: 20px;
  669. padding-bottom: 0;
  670. color: $primary-text-color;
  671. }
  672. &__extra,
  673. .roles {
  674. padding: 20px;
  675. font-size: 14px;
  676. color: $darker-text-color;
  677. }
  678. .roles {
  679. padding-bottom: 0;
  680. }
  681. }
  682. .directory__list {
  683. display: grid;
  684. grid-gap: 10px;
  685. grid-template-columns: minmax(0, 50%) minmax(0, 50%);
  686. @media screen and (max-width: $no-gap-breakpoint) {
  687. display: block;
  688. }
  689. .icon-button {
  690. font-size: 18px;
  691. }
  692. }
  693. .directory__card {
  694. margin-bottom: 0;
  695. }
  696. .card-grid {
  697. display: flex;
  698. flex-wrap: wrap;
  699. min-width: 100%;
  700. margin: 0 -5px;
  701. & > div {
  702. box-sizing: border-box;
  703. flex: 1 0 auto;
  704. width: 300px;
  705. padding: 0 5px;
  706. margin-bottom: 10px;
  707. max-width: 33.333%;
  708. @media screen and (max-width: 900px) {
  709. max-width: 50%;
  710. }
  711. @media screen and (max-width: 600px) {
  712. max-width: 100%;
  713. }
  714. }
  715. @media screen and (max-width: $no-gap-breakpoint) {
  716. margin: 0;
  717. border-top: 1px solid lighten($ui-base-color, 8%);
  718. & > div {
  719. width: 100%;
  720. padding: 0;
  721. margin-bottom: 0;
  722. border-bottom: 1px solid lighten($ui-base-color, 8%);
  723. &:last-child {
  724. border-bottom: 0;
  725. }
  726. .card__bar {
  727. background: $ui-base-color;
  728. &:hover,
  729. &:active,
  730. &:focus {
  731. background: lighten($ui-base-color, 4%);
  732. }
  733. }
  734. }
  735. }
  736. }
  737. }