style.scss 25 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529
  1. /*
  2. style.css is generated from style.scss
  3. do not edit style.css
  4. edit style.scss
  5. */
  6. /* adopted from https://piccalil.li/blog/a-more-modern-css-reset/ */
  7. @layer reset {
  8. /* Box sizing rules */
  9. *,
  10. *::before,
  11. *::after {
  12. box-sizing: border-box;
  13. }
  14. /* Prevent font size inflation */
  15. html {
  16. -moz-text-size-adjust: none;
  17. -webkit-text-size-adjust: none;
  18. text-size-adjust: none;
  19. }
  20. /* Remove default margin in favour of better control in authored CSS */
  21. body,
  22. h1,
  23. h2,
  24. h3,
  25. h4,
  26. p,
  27. figure,
  28. blockquote,
  29. dl,
  30. dd {
  31. margin-block-end: 0;
  32. }
  33. /* Remove list styles on ul, ol elements with a list role, which suggests default styling will be removed */
  34. ul[role='list'],
  35. ol[role='list'] {
  36. list-style: none;
  37. }
  38. /* Fix list style to not indent */
  39. ul,
  40. ol,
  41. menu {
  42. padding-inline-start: 1.5em;
  43. }
  44. li {
  45. padding-inline-start: 0.25em;
  46. }
  47. /* Set core body defaults */
  48. body {
  49. min-height: 100vh;
  50. line-height: 1.5;
  51. }
  52. /* Set shorter line heights on headings and interactive elements */
  53. h1,
  54. h2,
  55. h3,
  56. h4,
  57. button,
  58. input,
  59. label {
  60. line-height: 1.1;
  61. }
  62. /* Balance text wrapping on headings */
  63. h1,
  64. h2,
  65. h3,
  66. h4 {
  67. text-wrap: balance;
  68. }
  69. /* A elements that don't have a class get default styles */
  70. a:not([class]) {
  71. text-decoration-skip-ink: auto;
  72. color: currentColor;
  73. }
  74. /* Make images easier to work with */
  75. img,
  76. picture {
  77. // max-width: 100%;
  78. display: block;
  79. }
  80. /* Inherit fonts for inputs and buttons */
  81. input,
  82. button,
  83. textarea,
  84. select {
  85. font-family: inherit;
  86. font-size: inherit;
  87. }
  88. /* Make sure textareas without a rows attribute are not tiny */
  89. textarea:not([rows]) {
  90. min-height: 10em;
  91. }
  92. /* Anything that has been anchored to should have extra scroll margin */
  93. :target {
  94. scroll-margin-block: 5ex;
  95. }
  96. }
  97. $bg: #131516;
  98. $bg-secondary: #222;
  99. $fg: #fff;
  100. $fg-secondary: #aaa;
  101. $link: #118bee;
  102. $highlight: #fc365b;
  103. $border-radius: 5px;
  104. $line-height: 1.5;
  105. $active-brightness: 0.85;
  106. $hover-brightness: 1.2;
  107. $box-shadow: 2px 2px 10px;
  108. $color-shadow: #bbbbbb20;
  109. $font-family: "Roboto", "Open Sans", "Noto Sans", sans-serif, "Noto Sans CJK JP";
  110. $small-artwork-width: 184px;
  111. $large-artwork-width: 288px;
  112. $novel-width: 392px;
  113. $small-breakpoint: 440px;
  114. html {
  115. font-size: 62.5%;
  116. }
  117. body {
  118. top: 0;
  119. margin: 0;
  120. background-color: $bg;
  121. color: $fg;
  122. font-size: 1.8rem;
  123. font-family: $font-family;
  124. margin-bottom: 10px;
  125. }
  126. main {
  127. @media (min-width: $small-breakpoint) {
  128. margin-inline: 5px;
  129. }
  130. }
  131. h1,
  132. h2,
  133. h3,
  134. h4,
  135. h5,
  136. h6 {
  137. margin-block-end: 0.5em;
  138. }
  139. h1 {
  140. font-size: 1.5em;
  141. }
  142. h2 {
  143. font-size: 1.17em;
  144. }
  145. h3 {
  146. font-size: 1em;
  147. }
  148. h4 {
  149. font-size: 0.83em;
  150. }
  151. h5 {
  152. font-size: 0.67em;
  153. }
  154. h6 {
  155. font-size: 0.50em;
  156. }
  157. a {
  158. color: $link;
  159. text-decoration: none;
  160. }
  161. /* Scrollbars */
  162. * {
  163. scrollbar-width: thin;
  164. // invalid line
  165. // scrollbar-color: $link auto;
  166. }
  167. *::-webkit-scrollbar {
  168. width: 5px;
  169. height: 5px;
  170. }
  171. *::-webkit-scrollbar-track {
  172. background: transparent;
  173. }
  174. *::-webkit-scrollbar-thumb {
  175. background-color: $link;
  176. border-radius: 10px;
  177. }
  178. .special-symbol {
  179. display: inline-flex;
  180. align-items: center;
  181. justify-content: center;
  182. width: 1.8rem;
  183. height: 1.8rem;
  184. font-size: 1.8rem;
  185. }
  186. [hidden] {
  187. display: none;
  188. }
  189. input,
  190. label,
  191. select,
  192. textarea {
  193. display: block;
  194. font-size: inherit;
  195. max-width: 600px;
  196. }
  197. input[type="checkbox"],
  198. input[type="radio"] {
  199. display: inline-block;
  200. }
  201. input[type="checkbox"]+label,
  202. input[type="radio"]+label {
  203. display: inline-flex;
  204. flex-direction: column;
  205. font-weight: normal;
  206. position: relative;
  207. top: 1px;
  208. }
  209. input[type="range"] {
  210. padding: 0.4rem 0;
  211. }
  212. input,
  213. select,
  214. textarea {
  215. border: 1px solid $bg-secondary;
  216. border-radius: $border-radius;
  217. margin-bottom: 1rem;
  218. padding: 0.4rem 0.8rem;
  219. }
  220. input[type="text"],
  221. textarea {
  222. width: calc(100% - 1.6rem);
  223. background-color: $bg-secondary;
  224. color: $fg-secondary;
  225. }
  226. input[readonly],
  227. textarea[readonly] {
  228. background-color: $bg-secondary;
  229. }
  230. .form-field {
  231. border: 1px solid $bg-secondary;
  232. border-radius: $border-radius;
  233. box-shadow: $box-shadow $color-shadow;
  234. display: block;
  235. max-width: 800px;
  236. min-width: 460px;
  237. padding: 1.5rem;
  238. margin: 0.5rem 0;
  239. header {
  240. margin: 1.5rem 0;
  241. padding: 1.5rem 0;
  242. }
  243. label {
  244. font-weight: bold;
  245. margin-bottom: 0.2rem;
  246. }
  247. }
  248. a b,
  249. a em,
  250. a i,
  251. a strong,
  252. button,
  253. input[type="submit"],
  254. .switch-button,
  255. .pagination-button {
  256. border-radius: $border-radius;
  257. display: inline-block;
  258. font-size: medium;
  259. font-weight: bold;
  260. line-height: $line-height;
  261. margin: 0.5rem 0;
  262. padding: 0.5rem 1rem;
  263. }
  264. button,
  265. input[type="submit"],
  266. .switch-button,
  267. .pagination-button {
  268. font-family: $font-family;
  269. }
  270. button:active,
  271. input[type="submit"]:active,
  272. .switch-button:active,
  273. .pagination-button:active {
  274. filter: brightness($active-brightness);
  275. }
  276. button:hover,
  277. input[type="submit"]:hover,
  278. .switch-button:hover,
  279. .pagination-button:hover {
  280. cursor: pointer;
  281. filter: brightness($hover-brightness);
  282. }
  283. a b,
  284. a strong,
  285. button,
  286. input[type="submit"],
  287. .switch-button,
  288. .pagination-button {
  289. background-color: $link;
  290. color: $fg;
  291. }
  292. input[type="submit"][hidden] {
  293. display: none;
  294. }
  295. .switch-button[selected="1"] {
  296. background: $highlight;
  297. }
  298. .switch-seperator {
  299. display: inline-block;
  300. margin-left: 10px;
  301. }
  302. .pagination {
  303. text-align: center;
  304. form {
  305. display: inline-block;
  306. }
  307. .pagination-buttons {
  308. text-align: center;
  309. input {
  310. width: 5em;
  311. }
  312. }
  313. .pagination-button {
  314. margin-right: 5px;
  315. }
  316. #highlight {
  317. filter: brightness($hover-brightness);
  318. }
  319. .disabled {
  320. pointer-events: none;
  321. background-color: $bg-secondary;
  322. filter: brightness(1);
  323. }
  324. }
  325. .tabs {
  326. margin-top: 1rem;
  327. margin-bottom: 1rem;
  328. border: 1px solid white;
  329. border-radius: 3px;
  330. overflow: hidden;
  331. display: flex;
  332. flex-wrap: wrap;
  333. input[type="radio"]:checked + label + .tabs-content {
  334. display: block;
  335. }
  336. .tabs-content {
  337. order: 999;
  338. width: 100%;
  339. border-top: 1px solid white;
  340. padding: .5rem 1rem 1rem;
  341. display: none;
  342. }
  343. }
  344. #site-config {
  345. display: none;
  346. }
  347. // https://stackoverflow.com/questions/63787241/css-how-to-create-an-infinitely-moving-repeating-linear-gradient/63787567#63787567
  348. #loading-indicator {
  349. z-index: 2;
  350. isolation: isolate;
  351. position: sticky;
  352. top: 0;
  353. height: 4px;
  354. margin-bottom: -4px;
  355. // background-size: 200px auto;
  356. animation: rolling-something 1s linear infinite;
  357. background-image: repeating-linear-gradient(-0.25turn, $link 0vw, transparent 40vw);
  358. background-size: 80vw auto;
  359. will-change: opacity;
  360. transition: opacity 0.3s;
  361. opacity: 0;
  362. &.htmx-request {
  363. opacity: 1;
  364. transition-duration: 1s;
  365. transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
  366. }
  367. }
  368. @keyframes rolling-something {
  369. 0% {
  370. background-position-x: 0vw
  371. }
  372. 100% {
  373. background-position-x: 40vw
  374. }
  375. }
  376. nav {
  377. margin-bottom: 15px;
  378. padding-left: 20px;
  379. padding-right: 20px;
  380. .navigation-wrapper {
  381. padding-block: 15px;
  382. display: flex;
  383. justify-content: space-between;
  384. align-items: center;
  385. width: auto;
  386. }
  387. // .navbar-shadow {
  388. // width: 100%;
  389. // height: 10px;
  390. // background: repeating-linear-gradient(
  391. // 52.5deg,
  392. // rgba(32, 32, 32, 0.7),
  393. // rgba(32, 32, 32, 0.7) 14px,
  394. // rgba(240, 248, 255, 0) 14px,
  395. // rgba(240, 248, 255, 0) 28px
  396. // );
  397. // }
  398. .sidebar-container {
  399. height: 30px;
  400. }
  401. .navbar-brand {
  402. display: inline-flex;
  403. gap: 10px;
  404. span {
  405. font-weight: bold;
  406. font-size: 1.3em;
  407. color: $fg;
  408. }
  409. }
  410. .navbar-entry {
  411. display: flex;
  412. img {
  413. width: 30px;
  414. height: 30px;
  415. }
  416. }
  417. .search-form {
  418. display: flex;
  419. gap: 4px;
  420. margin-left: 8px;
  421. align-items: center;
  422. input {
  423. margin: 0;
  424. }
  425. }
  426. .sidebar-toggler {
  427. display: none;
  428. &:checked~.sidebar {
  429. transform: translateX(0);
  430. }
  431. }
  432. .sidebar-label {
  433. display: flex;
  434. margin-right: 20px;
  435. cursor: pointer;
  436. }
  437. .sidebar {
  438. z-index: 1;
  439. isolation: isolate;
  440. background-color: $bg;
  441. position: absolute;
  442. padding-top: 6px;
  443. left: 0;
  444. width: 220px;
  445. transform: translateX(-220px);
  446. transition: transform 250ms cubic-bezier(0.23, 1, 0.32, 1);
  447. br {
  448. align-self: stretch;
  449. margin-top: 10px;
  450. }
  451. }
  452. .sidebar-list {
  453. list-style-type: none;
  454. margin: 0;
  455. padding: 0;
  456. }
  457. .sidebar-item {
  458. display: flex;
  459. align-items: center;
  460. list-style: none;
  461. color: $fg;
  462. font-size: 0.9em;
  463. text-decoration: none;
  464. padding: 10px;
  465. &:hover {
  466. background-color: $bg-secondary;
  467. }
  468. img {
  469. width: 30px;
  470. height: 30px;
  471. margin-left: 1.2rem;
  472. margin-right: 10px;
  473. }
  474. }
  475. }
  476. // mobile nav bar
  477. @media screen and (max-height: 767px) {
  478. nav {
  479. position: sticky;
  480. top: 0;
  481. isolation: isolate;
  482. z-index: 1;
  483. background-color: $bg;
  484. .navigation-wrapper {
  485. background-color: $bg;
  486. padding-block: 8px; // Reduced from 15px
  487. }
  488. .sidebar {
  489. z-index: -1;
  490. width: 100vw;
  491. transform: translateY(-110%);
  492. padding-block: 8px 16px;
  493. br {
  494. display: none;
  495. }
  496. }
  497. .sidebar-list {
  498. background-color: $bg;
  499. // display: flex;
  500. // flex-direction: row;
  501. // flex-wrap: wrap;
  502. display: grid;
  503. grid-template-columns: minmax(0px, 400px) repeat(auto-fit,
  504. minmax(0px, 400px));
  505. }
  506. .sidebar-item {
  507. padding-inline: unset;
  508. }
  509. }
  510. }
  511. .component-header {
  512. display: flex;
  513. justify-content: space-between;
  514. align-items: center;
  515. h2 {
  516. margin: 0;
  517. display: inline-block;
  518. }
  519. }
  520. .container {
  521. max-width: 1200px;
  522. margin-inline: auto;
  523. padding-inline: 4px;
  524. scroll-margin-top: 71px; // Prevent images from being covered; equal to the navigation bar height
  525. @media (min-width: $small-breakpoint) {
  526. padding-inline: 10px;
  527. }
  528. }
  529. .error.container {
  530. text-align: center;
  531. }
  532. .artwork-container-header {
  533. display: flex;
  534. flex-wrap: wrap;
  535. align-items: center;
  536. justify-content: space-between;
  537. }
  538. .artwork-container {
  539. display: grid;
  540. grid-template-columns: repeat(auto-fit,
  541. minmax(calc($small-artwork-width + 15px), 1fr));
  542. align-items: center;
  543. justify-items: center;
  544. }
  545. .artwork-container-scroll {
  546. display: flex;
  547. overflow: hidden;
  548. overflow-x: scroll;
  549. }
  550. .artwork-container,
  551. .artwork-container-scroll {
  552. a {
  553. text-decoration: none;
  554. color: $fg;
  555. }
  556. .artwork-large {
  557. img {
  558. width: $large-artwork-width;
  559. height: $large-artwork-width;
  560. }
  561. .artwork-title {
  562. max-width: $large-artwork-width;
  563. }
  564. .artwork-author {
  565. max-width: $large-artwork-width;
  566. a {
  567. max-width: $small-artwork-width;
  568. }
  569. }
  570. }
  571. .artwork-small {
  572. img {
  573. width: $small-artwork-width;
  574. height: $small-artwork-width;
  575. background: rgb(19,21,22);
  576. background: linear-gradient(0deg, rgba(10,10,10,0.5) 0%, rgba(19,21,22,0) 80%, rgba(34,33,33,0) 100%);
  577. }
  578. .artwork-image {
  579. position: relative;
  580. .overlay-cover {
  581. position: absolute;
  582. top: 0;
  583. left: 0;
  584. width: 100%;
  585. height: 100%;
  586. cursor: pointer;
  587. }
  588. .overlay-button {
  589. position: absolute;
  590. bottom: 0;
  591. right: 0;
  592. padding: 0 5px;
  593. background-color: rgba(0, 0, 0, 0.3);
  594. cursor: pointer;
  595. }
  596. }
  597. .artwork-title {
  598. max-width: $small-artwork-width;
  599. }
  600. .artwork-author {
  601. max-width: $small-artwork-width;
  602. a {
  603. max-width: $small-artwork-width;
  604. }
  605. }
  606. }
  607. .artwork {
  608. padding: 5px;
  609. width: fit-content;
  610. position: relative;
  611. .artwork-additional {
  612. position: absolute;
  613. top: 4px;
  614. left: 4px;
  615. right: 4px;
  616. box-sizing: border-box;
  617. display: flex;
  618. align-items: flex-start;
  619. justify-content: space-between;
  620. padding: 4px 4px 0px;
  621. pointer-events: none;
  622. .artwork-position {
  623. display: flex;
  624. align-items: center;
  625. justify-content: center;
  626. border-radius: 50%;
  627. font-weight: bold;
  628. width: 40px;
  629. height: 40px;
  630. font-size: 16px;
  631. background-color: rgba(0, 0, 0, 0.32);
  632. }
  633. .artwork-profanity-label {
  634. display: flex;
  635. align-items: center;
  636. justify-content: center;
  637. font-size: 10px;
  638. border-radius: 20px;
  639. padding: 0.4rem;
  640. background-color: $highlight;
  641. color: $fg;
  642. }
  643. .artwork-page-count {
  644. display: flex;
  645. justify-content: center;
  646. align-items: center;
  647. flex: 0 0 auto;
  648. box-sizing: border-box;
  649. height: 20px;
  650. min-width: 20px;
  651. color: $fg;
  652. font-weight: bold;
  653. padding: 0px 6px;
  654. background: rgba(0, 0, 0, 0.32);
  655. border-radius: 10px;
  656. font-size: 10px;
  657. line-height: 10px;
  658. .boxbox {
  659. font-size: 9px;
  660. }
  661. }
  662. }
  663. img {
  664. object-fit: cover;
  665. object-position: center center;
  666. border-radius: $border-radius;
  667. }
  668. .artwork-title {
  669. display: flex;
  670. align-items: center;
  671. a {
  672. font-size: 14px;
  673. display: inline;
  674. overflow: hidden;
  675. text-overflow: ellipsis;
  676. white-space: nowrap;
  677. line-height: 22px;
  678. font-weight: bold;
  679. }
  680. }
  681. .artwork-author {
  682. display: flex;
  683. align-items: center;
  684. a {
  685. display: flex;
  686. align-items: center;
  687. img {
  688. aspect-ratio: 1/1;
  689. width: 24px;
  690. height: 24px;
  691. object-fit: cover;
  692. object-position: center top;
  693. border-radius: 50%;
  694. margin-right: 5px;
  695. }
  696. span {
  697. font-size: 14px;
  698. overflow: hidden;
  699. text-overflow: ellipsis;
  700. white-space: nowrap;
  701. line-height: 22px;
  702. }
  703. }
  704. }
  705. }
  706. }
  707. /* Brought out here because both artworks and novels needed this */
  708. .illust-tags {
  709. font-size: 0.9em;
  710. .illust-tag-attr {
  711. display: inline-flex;
  712. align-items: center;
  713. margin-right: 15px;
  714. img {
  715. aspect-ratio: 1/1;
  716. width: 18px;
  717. height: 18px;
  718. margin-right: 5px;
  719. }
  720. }
  721. .illust-tag {
  722. margin-right: 10px;
  723. #highlight {
  724. color: $highlight;
  725. }
  726. .illust-tag-name {
  727. color: $link;
  728. font-weight: bold;
  729. margin-right: 5px;
  730. }
  731. }
  732. }
  733. .illust-attr {
  734. display: flex;
  735. align-items: center;
  736. justify-content: space-between;
  737. margin-top: 10px;
  738. margin-bottom: 10px;
  739. .illust-author-attr {
  740. display: flex;
  741. align-items: center;
  742. }
  743. .illust-avatar {
  744. width: 62px;
  745. height: 62px;
  746. border-radius: 50px;
  747. object-fit: cover;
  748. object-position: center top;
  749. }
  750. .attr-wrap {
  751. margin-left: 5px;
  752. .illust-title {
  753. font-weight: bold;
  754. }
  755. .illust-author {
  756. font-size: 0.8em;
  757. }
  758. a {
  759. color: $fg-secondary;
  760. }
  761. }
  762. .artwork-actions {
  763. img {
  764. aspect-ratio: 1/1;
  765. width: 30px;
  766. height: 30px;
  767. display: inline;
  768. }
  769. }
  770. }
  771. .illust {
  772. background-color: $bg-secondary;
  773. border-radius: $border-radius;
  774. padding: 5px 15px;
  775. .illust-images {
  776. display: flex;
  777. align-items: center;
  778. flex-direction: column;
  779. width: 100%;
  780. img,
  781. video {
  782. margin-top: 15px;
  783. max-height: 1000px;
  784. width: auto;
  785. max-width: 100%;
  786. }
  787. }
  788. .illust-description {
  789. font-size: 0.85em;
  790. }
  791. .comment {
  792. display: flex;
  793. margin-bottom: 10px;
  794. p {
  795. margin: 0;
  796. font-size: 0.8em;
  797. }
  798. .comment-avatar {
  799. width: 40px;
  800. height: 40px;
  801. border-radius: 50%;
  802. margin-right: 10px;
  803. }
  804. .comment-author {
  805. color: $fg;
  806. font-size: medium;
  807. font-weight: bold;
  808. }
  809. .stamp {
  810. width: 96px;
  811. height: 96px;
  812. border-radius: 4px;
  813. }
  814. .emoji {
  815. width: 24px;
  816. height: 24px;
  817. margin-left: 3px;
  818. margin-right: 3px;
  819. }
  820. }
  821. .illust-other-works {
  822. a.illust-other-works-author {
  823. display: inline-flex;
  824. align-items: center;
  825. text-decoration: none;
  826. color: $fg;
  827. &>img {
  828. aspect-ratio: 1/1;
  829. width: 50px;
  830. height: 50px;
  831. border-radius: 50%;
  832. margin-right: 5px;
  833. object-fit: cover;
  834. object-position: center top;
  835. }
  836. }
  837. }
  838. }
  839. .novel-container {
  840. display: grid;
  841. grid-template-columns: repeat(auto-fit,
  842. minmax(calc($novel-width + 15px), 1fr));
  843. justify-content: center;
  844. }
  845. .novel-card {
  846. font-size: 1.5rem;
  847. padding: 5px 15px;
  848. padding-top: 1em;
  849. .novel-detail {
  850. display: flex;
  851. .novel-author {
  852. display: flex;
  853. align-items: center;
  854. font-size: 0.8em;
  855. img {
  856. width: 16px;
  857. height: 16px;
  858. border-radius: 50%;
  859. }
  860. span {
  861. color: $fg;
  862. display: inline-block;
  863. margin-left: 5px;
  864. }
  865. }
  866. .novel-metadata {
  867. margin-left: 1.5rem;
  868. .novel-title {
  869. color: $fg;
  870. font-size: 1.17em;
  871. font-weight: bold;
  872. overflow: hidden;
  873. overflow-wrap: break-word;
  874. word-break: break-word;
  875. text-overflow: ellipsis;
  876. width: 100%;
  877. display: -webkit-box;
  878. -webkit-line-clamp: 2;
  879. -webkit-box-orient: vertical;
  880. }
  881. .novel-description {
  882. font-size: 0.85em;
  883. overflow: hidden;
  884. overflow-wrap: break-word;
  885. word-break: break-word;
  886. text-overflow: ellipsis;
  887. width: 100%;
  888. display: -webkit-box;
  889. -webkit-line-clamp: 4;
  890. -webkit-box-orient: vertical;
  891. }
  892. }
  893. }
  894. .novel-cover img {
  895. /* warning: hard-coded values */
  896. width: 136px;
  897. height: 191px;
  898. object-fit: cover;
  899. object-position: center center;
  900. }
  901. .novel-content {
  902. margin: 1.2rem 0;
  903. line-height: 1.8;
  904. color: black;
  905. background-color: white;
  906. }
  907. }
  908. .novel {
  909. background-color: $bg-secondary;
  910. border-radius: $border-radius;
  911. padding: 5px 15px;
  912. padding-top: 1em;
  913. .novel-detail {
  914. display: flex;
  915. .novel-metadata {
  916. margin-left: 1.5rem;
  917. .novel-title {
  918. font-size: 1.17em;
  919. font-weight: bold;
  920. }
  921. .novel-description {
  922. font-size: 0.85em;
  923. }
  924. }
  925. }
  926. .novel-cover img {
  927. /* warning: hard-coded values */
  928. width: 136px;
  929. height: 191px;
  930. object-fit: cover;
  931. object-position: center center;
  932. }
  933. .novel-content {
  934. margin: 1.2rem 0;
  935. line-height: 2;
  936. color: black;
  937. background-color: white;
  938. max-width: 100%;
  939. width: 100%;
  940. overflow-x: scroll;
  941. .novel-content-text {
  942. padding: 6.4rem 10rem;
  943. text-align: justify;
  944. img {
  945. max-width: 100%;
  946. max-height: 100%;
  947. margin: 0 0.5rem;
  948. }
  949. }
  950. }
  951. .novel-attr {
  952. display: flex;
  953. align-items: center;
  954. margin-top: 10px;
  955. margin-bottom: 10px;
  956. .novel-avatar {
  957. width: 62px;
  958. height: 62px;
  959. border-radius: 50px;
  960. object-fit: cover;
  961. object-position: center top;
  962. }
  963. .attr-wrap {
  964. margin-left: 5px;
  965. .novel-author {
  966. font-size: 0.8em;
  967. }
  968. a {
  969. color: $fg-secondary;
  970. }
  971. }
  972. }
  973. .novel-settings {
  974. background-color: $bg;
  975. padding: 0.5rem;
  976. position: sticky;
  977. top: 0;
  978. img {
  979. width: 30px;
  980. height: 30px;
  981. }
  982. .novel-settings-wrapper {
  983. display: flex;
  984. }
  985. /* The container <div> - needed to position the dropdown content */
  986. .dropdown {
  987. position: relative;
  988. display: inline-block;
  989. }
  990. /* Dropdown Content (Hidden by Default) */
  991. .dropdown-content {
  992. display: none;
  993. position: absolute;
  994. background-color: $bg;
  995. min-width: 160px;
  996. box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.4);
  997. z-index: 1;
  998. padding: 1rem;
  999. .value-holder {
  1000. display: none;
  1001. }
  1002. }
  1003. .dropdown-toggler {
  1004. display: none;
  1005. &:checked~.dropdown-content {
  1006. display: block;
  1007. }
  1008. }
  1009. }
  1010. }
  1011. // Font settings for novels
  1012. $font-fallback-serif: "Yu Mincho",
  1013. YuMincho,
  1014. "Hiragino Mincho ProN",
  1015. "Hiragino Mincho Pro",
  1016. "Source Han Serif",
  1017. "BIZ UDMincho Medium",
  1018. "Source Serif Pro",
  1019. "Source Serif",
  1020. "Noto Serif",
  1021. "Times New Roman",
  1022. "Georgia Pro",
  1023. Georgia,
  1024. Simsun,
  1025. PMingLiu,
  1026. AppleMyungjo,
  1027. "Source Han Serif K",
  1028. "Source Han Serif KR",
  1029. "Noto Serif KR",
  1030. Batang,
  1031. serif;
  1032. [data-font=mincho][data-font=jp] {
  1033. font-family:
  1034. "Source Han Serif JP",
  1035. "Noto Serif JP",
  1036. $font-fallback-serif;
  1037. }
  1038. [data-font=mincho][data-font=zh-cn],
  1039. [data-font=mincho][data-font=zh-hans] {
  1040. font-family:
  1041. "Songti SC",
  1042. "Source Han Serif SC",
  1043. "Noto Serif SC",
  1044. "Source Han Serif CN",
  1045. $font-fallback-serif;
  1046. }
  1047. // todo: technically, zh-hk > zh-hant > zh
  1048. // Noto Sans have
  1049. // CJK HK
  1050. // CJK JP
  1051. // CJK KR
  1052. // CJK SC
  1053. // CJK TC
  1054. [data-font=mincho][data-font=zh-tw],
  1055. [data-font=mincho][data-font=zh-hk],
  1056. [data-font=mincho][data-font=zh-hant] {
  1057. font-family:
  1058. "Songti TC",
  1059. "Source Han Serif TC",
  1060. "Noto Serif TC",
  1061. "Source Han Serif TW",
  1062. "Source Han Serif HK",
  1063. $font-fallback-serif;
  1064. }
  1065. [data-font=mincho] {
  1066. font-family: $font-fallback-serif;
  1067. }
  1068. $font-fallback-sans: YuGothic,
  1069. "Hiragino Kaku Gothic Pro",
  1070. Meiryo,
  1071. "Source Han Sans",
  1072. "Source Han Sans JP",
  1073. "Noto Sans CJK JP",
  1074. "Avenir Next",
  1075. Avenir,
  1076. "Source Sans",
  1077. "Noto Sans",
  1078. Roboto,
  1079. Verdana,
  1080. "Pingfang TC",
  1081. "Pingfang HK",
  1082. "Hiragino Sans CNS",
  1083. "Lantinghei TC",
  1084. "Source Han Sans TW",
  1085. "Source Han Sans HK",
  1086. "Noto Sans CJK TC",
  1087. "Microsoft JhengHei",
  1088. "Pingfang SC",
  1089. "Hiragino Sans GB",
  1090. "Lantinghei SC",
  1091. "Source Han Sans CN",
  1092. "Noto Sans CJK SC",
  1093. "Microsoft Yahei",
  1094. DengXian,
  1095. "Apple SD Gothic Neo",
  1096. "Source Han Sans K",
  1097. "Source Han Sans KR",
  1098. "Noto Sans CJK KR",
  1099. "Malgun Gothic",
  1100. sans-serif;
  1101. [data-font=gothic] {
  1102. font-family: $font-fallback-sans;
  1103. }
  1104. [data-view="2"] {
  1105. writing-mode: vertical-rl;
  1106. text-orientation: upright;
  1107. }
  1108. .background-cover {
  1109. background: repeating-linear-gradient(52.5deg,
  1110. rgba(32, 32, 32, 0.8),
  1111. rgba(32, 32, 32, 0.8) 14px,
  1112. rgba(240, 248, 255, 0) 14px,
  1113. rgba(240, 248, 255, 0) 28px);
  1114. height: 10vw;
  1115. min-height: 100px;
  1116. overflow: hidden;
  1117. padding-top: 10px;
  1118. padding-bottom: 10px;
  1119. img {
  1120. width: 100%;
  1121. height: 100%;
  1122. object-fit: cover;
  1123. }
  1124. }
  1125. #hasbg {
  1126. height: 40vw;
  1127. min-height: 100px;
  1128. max-height: 60vh;
  1129. }
  1130. .user {
  1131. transform: translateY(-8rem);
  1132. img {
  1133. display: inline;
  1134. }
  1135. .user-avatar {
  1136. text-align: center;
  1137. }
  1138. .user-avatar img {
  1139. aspect-ratio: 1/1;
  1140. width: 150px;
  1141. height: 150px;
  1142. border-radius: 50%;
  1143. object-fit: cover;
  1144. object-position: center top;
  1145. }
  1146. .user-social {
  1147. text-align: center;
  1148. img {
  1149. aspect-ratio: 1/1;
  1150. width: 36px;
  1151. height: 36px;
  1152. }
  1153. }
  1154. .user-details {
  1155. text-align: center;
  1156. h2 {
  1157. margin: 0;
  1158. }
  1159. }
  1160. }
  1161. .user-tags {
  1162. display: flex;
  1163. flex-wrap: wrap;
  1164. row-gap: 8px;
  1165. column-gap: 1em;
  1166. margin-block: 4px 20px;
  1167. &>a {
  1168. line-height: 1;
  1169. &:hover {
  1170. text-decoration: underline;
  1171. }
  1172. }
  1173. }
  1174. #calendar {
  1175. width: 100%;
  1176. height: auto;
  1177. }
  1178. .calendar-weeks,
  1179. .calendar-board {
  1180. max-width: 1000px;
  1181. margin: 0 auto;
  1182. display: flex;
  1183. flex-wrap: wrap;
  1184. gap: 5px;
  1185. }
  1186. .calendar-weeks div {
  1187. width: 128px;
  1188. text-align: center;
  1189. }
  1190. .calendar-node {
  1191. width: 128px;
  1192. height: 128px;
  1193. border-radius: 8px;
  1194. background-color: $bg-secondary;
  1195. position: relative;
  1196. img {
  1197. border-radius: 8px;
  1198. object-fit: cover;
  1199. object-position: center center;
  1200. }
  1201. span {
  1202. font-size: small;
  1203. color: $fg;
  1204. background-color: $bg-secondary;
  1205. position: absolute;
  1206. top: 0.3rem;
  1207. left: 0.3rem;
  1208. padding: 0.05rem 0.3rem;
  1209. display: flex;
  1210. align-items: center;
  1211. justify-content: center;
  1212. }
  1213. }
  1214. .calendar-node-empty {
  1215. visibility: hidden;
  1216. }
  1217. @media screen and (max-width: 950px) {
  1218. .calendar-board {
  1219. justify-content: center;
  1220. }
  1221. .calendar-weeks,
  1222. .calendar-node-empty {
  1223. display: none;
  1224. }
  1225. }
  1226. .tag-header {
  1227. display: flex;
  1228. .tag-thumbnail {
  1229. width: 120px;
  1230. height: 120px;
  1231. border-radius: 5px;
  1232. margin-right: 20px;
  1233. object-fit: cover;
  1234. object-position: center center;
  1235. }
  1236. .tag-details {
  1237. .main-tag {
  1238. font-size: 1.6rem;
  1239. }
  1240. }
  1241. }
  1242. .tag-container {
  1243. background-color: $bg-secondary;
  1244. display: inline-flex;
  1245. align-items: center;
  1246. justify-content: center;
  1247. padding-left: 20px;
  1248. padding-right: 20px;
  1249. margin-right: 10px;
  1250. width: max-content;
  1251. height: 40px;
  1252. margin-bottom: 4px;
  1253. text-align: center;
  1254. font-weight: bold;
  1255. font-size: 1rem;
  1256. border-radius: 4px;
  1257. .main {
  1258. font-size: 1.6em;
  1259. }
  1260. .sub {
  1261. font-size: 1.2em;
  1262. font-weight: normal;
  1263. }
  1264. }
  1265. summary> :is(h1, h2, h3, h4, h5, h6) {
  1266. display: inline-block;
  1267. }
  1268. .settings-set-cookie h3 {
  1269. font-size: smaller;
  1270. margin-block: 4px 0;
  1271. }
  1272. .settings-set-cookie form {
  1273. display: flex;
  1274. gap: 4px;
  1275. }
  1276. .settings-set-cookie form>* {
  1277. margin: unset !important;
  1278. }
  1279. .settings-set-cookie form>input[type="text"] {
  1280. width: 20em;
  1281. }
  1282. input.critical {
  1283. background-color: $highlight;
  1284. }