thread.less 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822
  1. // Thread view
  2. // -------------------------
  3. .thread-buttons {
  4. overflow: auto;
  5. .pull-right {
  6. margin-left: @baseFontSize;
  7. }
  8. .thread-signin-message {
  9. float: right;
  10. a:link, a:visited {
  11. color: @textColor;
  12. }
  13. }
  14. }
  15. .thread-poll-body {
  16. background-color: @categoryBackground;
  17. border: 1px solid @categoryBorder;
  18. border-radius: @borderRadiusSmall;
  19. .box-shadow(0px 0px 0px 3px @categoryShadow);
  20. margin-bottom: @baseLineHeight;
  21. padding: (@baseLineHeight / 2) @baseLineHeight;
  22. h2 {
  23. margin-left: @horizontalComponentOffset;
  24. margin-bottom: @baseLineHeight;
  25. }
  26. form {
  27. margin: 0px;
  28. padding: 0px;
  29. }
  30. .options-form {
  31. margin-left: @horizontalComponentOffset;
  32. margin-bottom: @baseLineHeight;
  33. label {
  34. padding: 2px 0px;
  35. font-size: @fontSizeLarge;
  36. }
  37. .poll-voting-help {
  38. color: @grayLight;
  39. }
  40. }
  41. .poll-options {
  42. dd {
  43. padding-top: 2px;
  44. .progress {
  45. background: none;
  46. border: 1px solid darken(@bodyBackground, 15%);
  47. border-radius: 10px;
  48. .box-shadow(none);
  49. height: auto;
  50. margin: 0px;
  51. padding: 2px;
  52. .bar {
  53. border-radius: 5px;
  54. height: 10px;
  55. min-width: 10px;
  56. }
  57. }
  58. .option-details {
  59. padding-left: 6px;
  60. color: @grayLight;
  61. font-size: @fontSizeSmall;
  62. strong {
  63. padding-right: @fontSizeSmall;
  64. color: @bluePale;
  65. font-weight: normal;
  66. }
  67. }
  68. }
  69. }
  70. .poll-footer {
  71. overflow: auto;
  72. margin-top: @baseLineHeight * -0.5;
  73. margin-bottom: @baseLineHeight * 0.5;
  74. margin-left: @horizontalComponentOffset;
  75. .btn, p {
  76. float: left;
  77. margin-right: @baseFontSize / 2;
  78. }
  79. p {
  80. margin-left: @baseFontSize / 2;
  81. position: relative;
  82. top: @baseLineHeight / 3;
  83. color: @grayLight;
  84. }
  85. }
  86. }
  87. // Thread body styles
  88. .thread-body {
  89. .post-wrapper {
  90. // Post body
  91. .post-body {
  92. margin-bottom: @baseLineHeight;
  93. overflow: auto;
  94. .user-avatar {
  95. border-radius: @borderRadiusLarge;
  96. float: left;
  97. width: 100px;
  98. height: 100px;
  99. }
  100. .post-content {
  101. background-color: @postBackground;
  102. border: 1px solid @postBorder;
  103. border-radius: @borderRadiusLarge;
  104. margin-left: 100px + (@baseFontSize * 1.5);
  105. min-height: 100px;
  106. position: relative;
  107. &:after, &:before {
  108. right: 100%;
  109. border: solid transparent;
  110. content: "";
  111. height: 0; width: 0;
  112. position: absolute;
  113. pointer-events: none;
  114. }
  115. &:after {
  116. border-color: transparent;
  117. border-right-color: @postBackground;
  118. border-width: @fontSizeMini;
  119. top: @baseFontSize;
  120. margin-top: (@baseFontSize * -1) + @baseFontSize;
  121. }
  122. &:before {
  123. border-color: transparent;
  124. border-right-color: @postBorder;
  125. border-width: @fontSizeMini + 2;
  126. top: @baseFontSize - 1;
  127. margin-top: (@baseFontSize * -1) + @baseFontSize - 1px;
  128. }
  129. .post-header {
  130. padding: (@baseFontSize / 2) @baseFontSize;
  131. padding-bottom: 0px;
  132. color: grayLighter;
  133. .post-author {
  134. color: @textColor;
  135. font-weight: bold;
  136. }
  137. .post-author-label {
  138. text-shadow: none;
  139. &.post-label-guest {
  140. background-color: @grayLighter;
  141. color: @grayLight;
  142. }
  143. }
  144. .separator {
  145. color: @grayLighter;
  146. font-size: @fontSizeLarge;
  147. line-height: 5px;
  148. }
  149. .post-date {
  150. color: @grayLight;
  151. }
  152. .post-changelog {
  153. color: @grayLight;
  154. &:hover, &:active {
  155. color: @textColor;
  156. }
  157. }
  158. .post-perma {
  159. display: block;
  160. float: right;
  161. padding-left: 6px;
  162. color: @grayLight;
  163. font-weight: bold;
  164. &:hover, &:active {
  165. color: @textColor;
  166. }
  167. }
  168. .post-checkbox {
  169. float: right;
  170. position: relative;
  171. left: @baseFontSize - 4px;
  172. }
  173. .post-extra {
  174. float: right;
  175. .label {
  176. margin-left: @baseFontSize / 4;
  177. text-shadow: none;
  178. &.label-purple {
  179. background-color: #7e2ecf;
  180. }
  181. }
  182. }
  183. }
  184. .post-message {
  185. .markdown {
  186. padding: @baseFontSize;
  187. }
  188. .post-attachments {
  189. margin: 0px @baseFontSize;
  190. h3 {
  191. border-bottom: 1px dotted darken(@postBackground, 25%);
  192. margin: 0px;
  193. padding: 0px;
  194. color: @grayLight;
  195. font-size: @baseFontSize;
  196. line-height: @baseLineHeight;
  197. }
  198. hr {
  199. background: none;
  200. border-top: 1px dotted darken(@postBackground, 15%) !important;
  201. margin: 0px;
  202. padding: 0px;
  203. }
  204. .post-attachment {
  205. padding: (@baseLineHeight / 2) 0px;
  206. .attachment-image {
  207. float: left;
  208. i {
  209. display: block;
  210. height: 40px;
  211. width: 40px;
  212. color: @grayLight;
  213. font-size: 42px;
  214. text-align: center;
  215. }
  216. img {
  217. background-size: cover;
  218. border-radius: 3px;
  219. height: 40px;
  220. width: 40px;
  221. }
  222. }
  223. .attachment-body {
  224. margin-left: 52px;
  225. h4 {
  226. margin: 0px;
  227. padding: 0px;
  228. font-size: @baseFontSize;
  229. }
  230. .attachment-details {
  231. color: @grayLight;
  232. font-size: @fontSizeSmall;
  233. a:link, a:visited {
  234. color: @gray;
  235. }
  236. a:hover, a:active {
  237. color: @grayDarker;
  238. }
  239. .attachment-removed-message {
  240. color: @red;
  241. }
  242. }
  243. }
  244. }
  245. }
  246. .post-signature {
  247. border-top: 1px dotted darken(@postBackground, 25%);
  248. .opacity(60);
  249. margin: 0px @baseFontSize;
  250. font-size: 80%;
  251. .markdown {
  252. padding: 0px;
  253. padding-top: @baseLineHeight / 4;
  254. padding-bottom: @baseFontSize;
  255. }
  256. }
  257. }
  258. .post-footer {
  259. border-top: 1px solid @postBorder;
  260. overflow: auto;
  261. &:empty {
  262. display: none;
  263. }
  264. .post-rating {
  265. float: left;
  266. overflow: auto;
  267. padding: (@baseFontSize / 2) @baseFontSize;
  268. border-right: 1px dotted @postBorder;
  269. a {
  270. color: @grayLight;
  271. &:hover, a:active {
  272. color: @textColor;
  273. }
  274. }
  275. span {
  276. float: left;
  277. &.post-score {
  278. color: @grayLight;
  279. font-weight: bold;
  280. &.post-score-good {
  281. color: @green;
  282. }
  283. &.post-score-bad {
  284. color: @red;
  285. }
  286. }
  287. &.post-neutral, &.post-like, &.post-hate {
  288. margin-left: (@baseFontSize / 4);
  289. }
  290. &.post-neutral {
  291. color: @grayLight;
  292. }
  293. &.post-like {
  294. color: @green;
  295. }
  296. &.post-hate {
  297. color: @red;
  298. }
  299. }
  300. form {
  301. float: left;
  302. margin: 0px;
  303. padding: 0px;
  304. .btn-link {
  305. float: right;
  306. margin: 0px;
  307. margin-left: (@baseFontSize / 4);
  308. .opacity(100);
  309. padding: 0px;
  310. color: @grayLight;
  311. font-weight: normal;
  312. &:hover, &:active, &:focus {
  313. text-decoration: underline;
  314. }
  315. &.post-like {
  316. &:hover, &:active, &:focus, &:disabled {
  317. color: @green;
  318. }
  319. }
  320. &.post-hate {
  321. &:hover, &:active, &:focus, &:disabled {
  322. color: @red;
  323. }
  324. }
  325. &:disabled {
  326. &:hover, &:active, &:focus {
  327. text-decoration: none;
  328. }
  329. }
  330. }
  331. }
  332. }
  333. .post-actions {
  334. border-left: 1px dotted @postBorder;
  335. float: right;
  336. padding: (@baseFontSize / 2) @baseFontSize;
  337. color: @grayLight;
  338. a, span, form {
  339. float: left;
  340. overflow: auto;
  341. }
  342. form {
  343. margin: 0px;
  344. padding: 0px;
  345. .btn {
  346. float: right;
  347. margin: 0px;
  348. margin-left: @baseFontSize;
  349. .opacity(100);
  350. padding: 0px;
  351. color: @grayLight;
  352. font-weight: normal;
  353. &:hover, &:active, &:focus {
  354. color: @red;
  355. text-decoration: underline;
  356. }
  357. &.btn-report {
  358. &:disabled {
  359. color: @green;
  360. }
  361. }
  362. &.btn-hide {
  363. &:hover, &:active, &:focus {
  364. color: @orange;
  365. }
  366. }
  367. }
  368. &:first-child .btn {
  369. margin-left: 0px;
  370. }
  371. }
  372. a {
  373. margin-left: @baseFontSize;
  374. color: @grayLight;
  375. &:hover, a:active {
  376. color: @textColor;
  377. }
  378. &:first-child {
  379. margin-left: 0px;
  380. }
  381. &.post-reply {
  382. color: @gray;
  383. &:hover, a:active {
  384. color: @blue;
  385. }
  386. }
  387. }
  388. }
  389. }
  390. }
  391. &.post-muted {
  392. .user-avatar {
  393. width: 50px;
  394. height: 50px;
  395. .opacity(75);
  396. }
  397. .post-content {
  398. margin-left: 50px + (@baseFontSize * 1.5);
  399. min-height: 0px;
  400. .opacity(75);
  401. padding: @baseFontSize;
  402. .post-header {
  403. float: right;
  404. margin: 0px;
  405. margin-top: ((@baseFontSize / 2) * -1);
  406. margin-right: @baseFontSize * -1;
  407. .post-header-compact {
  408. float: left;
  409. margin-right: @baseFontSize;
  410. }
  411. }
  412. .post-message {
  413. color: @grayLight;
  414. font-size: @fontSizeLarge;
  415. strong, a {
  416. color: @textColor;
  417. font-weight: normal;
  418. }
  419. }
  420. }
  421. }
  422. }
  423. }
  424. .post-checkpoints {
  425. .post-checkpoint {
  426. text-align: center;
  427. margin-bottom: @baseLineHeight;
  428. &.checkpoint-deleted {
  429. .opacity(30);
  430. &:hover {
  431. .opacity(60);
  432. }
  433. }
  434. hr {
  435. background-color: @grayLight;
  436. background-image: -webkit-gradient(linear, 0 0, 100% 100%,
  437. color-stop(.25, rgba(255, 255, 255, .2)), color-stop(.25, transparent),
  438. color-stop(.5, transparent), color-stop(.5, rgba(255, 255, 255, .2)),
  439. color-stop(.75, rgba(255, 255, 255, .2)), color-stop(.75, transparent),
  440. to(transparent));
  441. background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, .2) 25%, transparent 25%,
  442. transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%,
  443. transparent 75%, transparent);
  444. background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, .2) 25%, transparent 25%,
  445. transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%,
  446. transparent 75%, transparent);
  447. background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, .2) 25%, transparent 25%,
  448. transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%,
  449. transparent 75%, transparent);
  450. background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, .2) 25%, transparent 25%,
  451. transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%,
  452. transparent 75%, transparent);
  453. background-image: linear-gradient(-45deg, rgba(255, 255, 255, .2) 25%, transparent 25%,
  454. transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%,
  455. transparent 75%, transparent);
  456. -webkit-background-size: 10px 10px;
  457. -moz-background-size: 10px 10px;
  458. background-size: 10px 10px;
  459. border: none;
  460. height: 4px;
  461. margin-bottom: (@baseLineHeight * -1) + (@baseFontSize / 2) + 1px;
  462. }
  463. span {
  464. background-color: @bodyBackground;
  465. padding: 0px @baseFontSize;
  466. color: @grayLight;
  467. a {
  468. color: @textColor;
  469. }
  470. i {
  471. margin-right: 2px;
  472. position: relative;
  473. top: 2px;
  474. width: @fontSizeLarge;
  475. font-size: @fontSizeLarge;
  476. text-align: center;
  477. }
  478. form {
  479. display: inline-block;
  480. margin: 0px;
  481. margin-top: -3px;
  482. margin-left: @baseFontSize / 2;
  483. padding: 0px;
  484. .btn {
  485. margin-top: -2px;
  486. padding: 0px;
  487. font-weight: normal;
  488. &:active, &:hover {
  489. text-decoration: underline;
  490. &.btn-show, &.btn-hide {
  491. color: @orange;
  492. }
  493. &.btn-delete {
  494. color: @red;
  495. }
  496. }
  497. }
  498. }
  499. form:first-of-type {
  500. margin-left: @baseFontSize;
  501. }
  502. }
  503. }
  504. }
  505. }
  506. // Thread moderation
  507. .thread-moderation {
  508. background-color: @categoryBackground;
  509. border: 1px solid @categoryBorder;
  510. border-radius: @baseBorderRadius;
  511. .box-shadow(0px 0px 0px 3px @categoryShadow);
  512. margin-bottom: @baseLineHeight;
  513. overflow: auto;
  514. padding: (@baseFontSize / 2);
  515. form {
  516. margin: 0px;
  517. }
  518. }
  519. // Quick reply styles
  520. .thread-quick-reply {
  521. overflow: auto;
  522. margin-top: @baseLineHeight;
  523. .user-avatar {
  524. border-radius: @baseBorderRadius;
  525. float: left;
  526. width: 100px;
  527. height: 100px;
  528. overflow: visible;
  529. }
  530. .editor {
  531. margin-left: 100px + (@baseFontSize * 1.5);
  532. position: relative;
  533. &:after, &:before {
  534. right: 100%;
  535. border: solid transparent;
  536. content: "";
  537. height: 0; width: 0;
  538. position: absolute;
  539. pointer-events: none;
  540. }
  541. &:after {
  542. border-color: transparent;
  543. border-right-color: @editorBackground;
  544. border-width: @fontSizeMini;
  545. top: @baseFontSize;
  546. margin-top: (@baseFontSize * -1) + @baseFontSize;
  547. }
  548. &:before {
  549. border-color: transparent;
  550. border-right-color: darken(@editorBackground, 10%);
  551. border-width: @fontSizeMini + 2;
  552. top: @baseFontSize - 1;
  553. margin-top: (@baseFontSize * -1) + @baseFontSize - 1px;
  554. }
  555. }
  556. }
  557. // Thread participants list
  558. .thread-participants {
  559. h3 {
  560. margin: 0px;
  561. margin-top: (@baseLineHeight - @baseFontSize) * -1;
  562. padding: 0px;
  563. color: @gray;
  564. font-size: @fontSizeLarge;
  565. font-weight: bold;
  566. }
  567. ul {
  568. background-color: @white;
  569. border: 1px solid darken(@bodyBackground, 10%);
  570. border-radius: @baseBorderRadius;
  571. margin: 0px;
  572. margin-bottom: @baseLineHeight;
  573. padding: 0px;
  574. li {
  575. border-bottom: 1px dotted darken(@bodyBackground, 10%);
  576. margin: 0px;
  577. padding: 6px 8px;
  578. font-weight: bold;
  579. img {
  580. border-radius: @borderRadiusSmall;
  581. width: 24px;
  582. height: 24px;
  583. position: relative;
  584. bottom: 1px;
  585. }
  586. a:link, a:active, a:visited, a:hover {
  587. margin: 0px 4px;
  588. position: relative;
  589. top: 2px;
  590. color: @textColor;
  591. font-size: @fontSizeLarge;
  592. font-weight: bold;
  593. }
  594. &:last-child {
  595. border-bottom: none;
  596. }
  597. form {
  598. float: right;
  599. margin: 0px;
  600. padding: 0px;
  601. button {
  602. float: left;
  603. padding-left: 0px;
  604. padding-right: 0px;
  605. margin-left: 12px;
  606. width: 28px;
  607. text-align: center;
  608. i {
  609. margin: 0px;
  610. position: relative;
  611. top: 1px;
  612. font-size: @fontSizeLarge;
  613. }
  614. }
  615. }
  616. }
  617. }
  618. h4 {
  619. margin: 0px;
  620. padding: 0px;
  621. color: @gray;
  622. font-size: @baseFontSize * 1.2;
  623. font-weight: bold;
  624. }
  625. .no-participants {
  626. margin-bottom: @baseLineHeight;
  627. }
  628. .invite-participant {
  629. background-color: @white;
  630. border: 1px solid darken(@bodyBackground, 15%);
  631. border-radius: @baseBorderRadius;
  632. margin-top: @baseLineHeight - @baseFontSize;
  633. padding: 1px;
  634. form {
  635. margin: 0px;
  636. padding: 0px;
  637. input, button {
  638. border: none;
  639. background: none;
  640. box-shadow: none;
  641. }
  642. input {
  643. width: 70%;
  644. }
  645. button {
  646. float: right;
  647. position: relative;
  648. top: 2px;
  649. left: 2px;
  650. i {
  651. margin: 0px;
  652. color: @grayLight;
  653. font-size: @fontSizeLarge;
  654. }
  655. &:hover, &:active {
  656. i {
  657. color: @textColor;
  658. }
  659. }
  660. }
  661. }
  662. }
  663. }