├── img
└── browser-2023-03-04.png
├── previous
├── ss18-font.user.css
├── ss16boardbanner.css
├── ss18-catalog.user.css
├── ss19-catalog.user.css
├── curabitr2.user.css
├── curabitr1.user.css
└── ss16.user.min.css
├── readme.md
├── ss21boardbanner.css
└── sidedish.user.js
/img/browser-2023-03-04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/saxamaphone69/ss21/HEAD/img/browser-2023-03-04.png
--------------------------------------------------------------------------------
/previous/ss18-font.user.css:
--------------------------------------------------------------------------------
1 | @import url('https://fonts.googleapis.com/css?family=Arimo:400,700|Karla:400|Inconsolata:400|Material+Icons&display=swap');
2 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | # ss21
2 | a self-centered, fresh attempt at (user)styling 4chan
3 |
4 | 
5 |
6 | following the success (or lack of) from curabitr and xl, ss21 provides a fresh and clean userstyle for use with either [ccd0's 4chan x](https://ccd0.github.io/4chan-x/) or [tuxedotako's typescript fork](https://github.com/TuxedoTako/4chan-xt) in ~~2019, 2020, 2021, 2022, 2023, 2024~~, 2025!
7 |
8 | created by **saxamaphone** "sax" `!3.saxN0DHY`, who has been making userstyles for 4chan since 2009 with styles such as 3 Shades of 4chan (which only exists as Midnight Caek in App/OneeChan now), curabitr, and xl
9 |
10 | ss21 is a fresh attempt to make a userstyle that looks radically different from the typical App/OneeChan aesthetic of today, utilising modern web standards and bleeding edge CSS technologies
11 |
12 | ## about
13 | | feature | detail |
14 | | --- | --- |
15 | | **documented** | looking through the original `ss21` file contains comments that explain what things do and why they are there |
16 | | **variables** | thankfully, we now use the preprocessor `.styl` within stylus for built in functions not previously possible |
17 | | **sidedish** | unlike most userstyles, `ss21` requires a companion userscript for additonal rice and features not found in 4chan X |
18 | | **filters** | through the use of 4chan X's filtering system, additional classes are added to certain posts for further enhancements |
19 | | **web fonts** | using `@import`, we can load fonts from the web, no longer requiring downloaded and locally installed fonts |
20 | | **rebase** | utilising code from well-established web projects such as bootstrap, carbon, and the material design guidelines, elements are rendered consistently and correctly across browsers |
21 |
22 | ### another userscript? a.k.a. why you need `sidedish` too
23 | `sidedish` adds those few extra ricing options:
24 | - removes the `:` from the settings' option labels and their descriptions
25 | - adds a scrolling progress indicator to the header
26 | - posts that have 8 or more backlinks have an additional class added to them indicating 'hotness' for styling
27 | - wraps the numbers in thread summaries in `b` to make them stand out
28 | - swaps the post info and file elements in OPs for consistent styling across posts
29 | - strips the brackets around the page number in the post info on the index
30 | - gives 'tall' posts a discernible class for styling
31 | - approximates aspect ratio of files and adds a `data-aspect-ratio` attribute for styling
32 | - adds a shortcut to crudely download all files within a thread
33 | - adds an off-canvas navigation menu/drawer of all the boards
34 | - changes the text of the QR buttons so they can become icons
35 | - adds a `captcha-loaded` discernible class to the captcha for styling
36 | - resizes large quote previews to fix the viewport
37 | - stylises the bottom board list to match the footer aesthetic, including moving the pass link
38 | - adds a discernible class for index sorting mode
39 | - if enabled in `ss21`, provides a polyfill for `display: masonry`
40 | - adds a imperial/metric weight and length unit converter for /fit/
41 | - adds OPs image/video to the banner for aesthetics
42 |
43 | it should be noted that `ss21` **does not** function properly with the default 4chan extension or App/OneeChan
44 |
45 | it is **highly** recommended you play with the settings within the userstyle
46 |
47 | ## installation
48 | this userstyle is currently being actively developed for chrome first, with firefox as an after thought. you will require [stylus](http://add0n.com/stylus.html) ([don't use stylish anymore](https://robertheaton.com/2018/08/16/stylish-is-back-and-you-still-shouldnt-use-it/)), a userscript manager such as [tampermonkey](https://tampermonkey.net/), and a blocking extension such as [ublock origin](https://chrome.google.com/webstore/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm?hl=en).
49 |
50 | 1. install [`ss21.user.styl`](https://github.com/saxamaphone69/ss21/raw/main/ss21.user.styl) (stylus should prompt you to install)
51 | 2. install [`sidedish.user.js`](https://github.com/saxamaphone69/ss21/raw/main/sidedish.user.js) (your userscript manager should prompt you to install)
52 | 3. add the blocking filters (to your blocking extension) and 4chan x filters (to 4chan x) below
53 | 4. cross your fingers and hope it works!
54 |
55 | ### blocker filters
56 | a blocker is used to not only hide ads, but also block some other stuff to save on network requests.
57 | `danbo` and `pubfuture` ads are blocked via easylist. if you're not using that, you'll need to zap them on your own.
58 | go to your blocker-of-choice options, and locate where you can add your own filters. add the following:
59 |
60 | ```
61 | ! ss21 Blocking Suggestions
62 | ! REQUIRED: Block all external stylesheets (Yostuba, Tomorrow, etc.)
63 | *//s.4cdn.org/css^$domain=boards.4chan.org
64 | *//s.4cdn.org/js/prettify/prettify.*.css
65 |
66 | ! REQUIRED: Block potentially harmful scripts inserted into 4chan
67 | @@||4chan.org^*$csp=default-src 'self' * data: 'unsafe-inline' 'unsafe-eval'
68 |
69 | ! This one used to work, or was needed for something, but I don't remember. Here for archives sake:
70 | ! 4chan.org##script:inject(abort-current-inline-script.js, String.fromCharCode)
71 |
72 | ! Add exceptions to certain stylesheets (flags, tegaki, etc.)
73 | @@||s.4cdn.org/css/flags.*.css
74 | @@||s.4cdn.org/css/painter.*.css
75 | @@||s.4cdn.org/css/tegaki.*.css
76 | @@||s.4cdn.org/css/yui.css
77 | @@||s.4cdn.org/css/global.*.css
78 | @@||s.4cdn.org/css/error.css
79 |
80 | ! RECOMMENDED: Block board banners (above /g/ - Technology)
81 | *//s.4cdn.org/image/title/*^$domain=boards.4chan.org,important
82 |
83 | ! RECOMMENDED: Block contest banners (advertisements to other boards)
84 | *//s.4cdn.org/image/contest_banners/*^$domain=boards.4chan.org,important
85 |
86 | ! OPTIONAL: Block snow.js, which adds snowflakes at Christmas
87 | *//s.4cdn.org/js/snow.js$script,important
88 |
89 | ! OPTIONAL: Block the Google Analytics script
90 | *//www.google-analytics.com/analytics.js^$domain=boards.4chan.org
91 | ```
92 |
93 | essentially:
94 | - block those bitcoin mining ads hiroshimoot uses
95 | - all 4chan css, with a few exceptions
96 | - title and contest banners (technically skippable)
97 |
98 | ### 4chan x filters
99 | ss21 makes use of the highlighting feature in 4chan x to give certain posts extra styling. if you'd like to experience ss21 as intended, add these filters:
100 |
101 | | section | filter |
102 | | --- | --- |
103 | | **post numbers** | `/(\d)\1$/;highlight:post--dubs;top:no;boards:s4s` |
104 | | **capcodes** | `/Founder$/;highlight:poster--founder;op:yes`
`/Admin$/;highlight:poster--admin;op:yes`
`/Mod$/;highlight:poster--mod;op:yes`
`/Manager$/;highlight:poster--manager;op:yes`
`/Developer$/;highlight:poster--developer;op:yes`
`/Verified$/;highlight:poster--verified;op:yes` |
105 | | **pass dates** | `/./;highlight:poster--pass;top:no;` |
106 | | **subject** | `/./;op:only;top:no;highlight:thread--subject`
`/(.){40,}/;op:only;top:no;highlight:thread--subject-long` |
107 | | **comment** | `/^\W*(\w+\b\W*){50,90}$/;op:only;top:no;highlight:thread--long`
`/^\W*(\w+\b\W*){91,149}$/;op:only;top:no;highlight:thread--extra-long`
`/^\W*(\w+\b\W*){150,}$/;op:only;top:no;highlight:thread--silly-long`
`/(?:[^\n]*(\n+)){5,}/;op:only;top:no;highlight:thread--new-lines` |
108 | | **filenames** | `/.webm$/;highlight:file--video;top:no;`
`/.gif$/;highlight:file--gif;top:no;` |
109 | | **image dimensions** | `/\d{4}x/;highlight:file--wide;top:no;`
`/x\d{4}/;highlight:file--high;top:no;` |
110 | | **filesize** | `/MB/;op:yes;highlight:file--huge;top:no;` |
111 |
112 | ## reporting bugs and feature requests
113 | feel free to open an issue for any bugs or requests here on the issue tracker
114 |
115 | ## licensing
116 | code released under CC-BY-SA-4.0
117 | contains code from https://github.com/ryanmorr/ready
118 | icons provided by https://www.material.io/resources/icons/
119 |
--------------------------------------------------------------------------------
/previous/ss16boardbanner.css:
--------------------------------------------------------------------------------
1 | @-moz-document regexp("https://boards\\.4chan(?:nel)?\\.org.*") {
2 | /*
3 | .board_ .boardBanner::after {
4 | background-image: url('');
5 | }
6 | */
7 | .board_g .boardBanner::after {
8 | background-image: url('data:image/jpeg;base64,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');
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/ss21boardbanner.css:
--------------------------------------------------------------------------------
1 | @-moz-document regexp("https://boards\\.4chan(?:nel)?\\.org.*") {
2 | /*
3 | Use the following format as a guide:
4 | .board_[ENTER_THE_BOARD_LETTER_HERE].boardBanner::after {
5 | background-image: url('');
6 | }
7 | */
8 | .board_g .boardBanner::after {
9 | background-image: url('data:image/jpeg;base64,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');
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/previous/ss18-catalog.user.css:
--------------------------------------------------------------------------------
1 | /* ==UserStyle==
2 | @name ss18 catalogue
3 | @namespace github.com/openstyles/stylus
4 | @version 1.0.0
5 | @description A new userstyle
6 | @author Me
7 | ==/UserStyle== */
8 |
9 | @-moz-document domain("boards.4chan.org"),
10 | domain('boards.4channel.org') {
11 | /**
12 | * catalogue support 😂👌
13 | * what level of css archeticure are you on?
14 | * idk, bem or something
15 | * ha, pathetic; watch this
16 | *
17 | */
18 |
19 | /**
20 | * if you switch from catalogue view to any other index view, the catalogue
21 | * specific elements remain in the dom, so need to hide them
22 | */
23 |
24 | :root:not(.catalog-mode) .board [class^=catalog] {
25 | display: none;
26 | }
27 |
28 | .catalog-container > .hide-thread-button,
29 | .catalog-post .fileThumb,
30 | :root.bottom-backlinks .catalog-post > .container,
31 | .werkTyme-filename {
32 | display: none;
33 | }
34 |
35 | :root.catalog-mode .board {
36 | max-width: 100%;
37 | width: 100%;
38 | display: grid;
39 | grid-gap: 1rem;
40 | grid-auto-rows: 22.5rem;
41 | grid-auto-flow: dense;
42 | justify-content: stretch;
43 | padding: 0 1.5rem;
44 | margin-bottom: 2rem;
45 | }
46 |
47 | :root.catalog-mode .board .thread:last-of-type {
48 | margin-bottom: 0;
49 | }
50 |
51 | :root.catalog-mode .board.catalog-small {
52 | grid-template-columns: repeat(12, 1fr);
53 | }
54 |
55 | :root.catalog-mode .board.catalog-large {
56 | grid-template-columns: repeat(6, 1fr);
57 | }
58 |
59 | /**
60 | * by default, each thread takes up 1 column. we also have to remove the
61 | * `padding` and `margin` we give to normal threads
62 | */
63 |
64 | .catalog-thread {
65 | position: relative;
66 | grid-column: span 1;
67 | padding: 0;
68 | margin-bottom: 0;
69 | /*overflow: hidden;*/
70 | z-index: 2;
71 | max-height: 20rem;
72 | border-radius: 2px;
73 | box-shadow: 0 .125rem .25rem rgba(33, 33, 33, .25);
74 | transition: all .25s;
75 | }
76 |
77 | .catalog-thread.thread--long {
78 | grid-column: span 2;
79 | }
80 |
81 | .catalog-thread.thread--extra-long {
82 | grid-column: span 2;
83 | grid-row: span 2;
84 | max-height: 41rem;
85 | }
86 | /*
87 | .catalog-thread::after {
88 | content: '';
89 | display: block;
90 | position: absolute;
91 | left: -1rem;
92 | top: -1rem;
93 | width: calc(100% + 2rem);
94 | height: calc(100% + 2rem);
95 | background-color: transparent;
96 | transition: background-color .25s, transform .25s;
97 | transform: scale(0);
98 | }
99 |
100 | .catalog-thread:hover::after {
101 | background-color: var(--background-primary);
102 | box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2),
103 | 0px 4px 5px 0px rgba(0, 0, 0, 0.14),
104 | 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
105 | transform: scale(1);
106 | z-index: 3;
107 | }
108 | */
109 | /*
110 | .catalog-thread:hover .catalog-post {
111 | z-index: 4;
112 | transform: scale(1.2);
113 | }
114 | */
115 | /*
116 |
117 | .catalog-thread:hover {
118 | transform: scale(1.02);
119 | z-index: 3;
120 | }
121 |
122 | .catalog-thread::after {
123 | content: '';
124 | display: block;
125 | position: absolute;
126 | left: -1rem;
127 | top: -1rem;
128 | width: calc(100% + 2rem);
129 | height: calc(100% + 2rem);
130 | background-color: transparent;
131 | transition: background-color .25s;
132 | z-index: 2;
133 | }
134 |
135 | .catalog-thread:hover::after {
136 | background-color: var(--background-primary);
137 | box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2),
138 | 0px 4px 5px 0px rgba(0, 0, 0, 0.14),
139 | 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
140 | }*/
141 |
142 | .catalog-post {
143 | display: flex;
144 | flex-direction: column;
145 | align-items: stretch;
146 | padding: 0;
147 | min-height: 20rem;
148 | position: relative;
149 | transition: transform .25s;
150 | }
151 |
152 | .catalog-post > .postInfo > :not(.subject),
153 | .catalog-post .subject:not(:empty)::after {
154 | display: none;
155 | }
156 |
157 | .catalog-post .file {
158 | order: 1;
159 | }
160 |
161 | .catalog-thread.thread--extra-long .catalog-post {
162 | min-height: 41rem;
163 | }
164 |
165 | .catalog-link {
166 | display: block;
167 | position: relative;
168 | order: 2;
169 | }
170 |
171 | .catalog-thumb {
172 | object-fit: cover;
173 | object-position: 50% 50%;
174 | width: 100% !important;
175 | height: 10rem !important;
176 | }
177 |
178 | .catalog-stats {
179 | order: 5;
180 | position: relative;
181 | padding: 0 .5rem 0 .75rem;
182 | display: flex;
183 | align-items: center;
184 | height: 3rem;
185 | background-color: var(--background-secondary);
186 | border-top: 1px solid var(--background-outline);
187 | }
188 |
189 | .catalog-stats > span[title] {
190 | color: var(--text-hint-on-background);
191 | cursor: help;
192 | }
193 |
194 | .catalog-stats > span[title] > span {
195 | color: var(--text-primary-on-background);
196 | }
197 |
198 | .catalog-stats > .catalog-icons {
199 | flex: 1;
200 | }
201 |
202 | .catalog-icons > img {
203 | margin-left: .5rem;
204 | }
205 |
206 | .catalog-stats > .menu-button {
207 | position: relative;
208 | top: auto;
209 | right: auto;
210 | display: inline-flex;
211 | align-items: center;
212 | }
213 |
214 | .catalog-post > .postInfo {
215 | order: 3;
216 | position: relative;
217 | }
218 |
219 | .catalog-post .subject:not(:empty) {
220 | color: var(--text-primary-on-dark);
221 | background-color: rgba(0, 0, 0, .5);
222 | display: block;
223 | position: absolute;
224 | top: -3rem;
225 | width: 100%;
226 | padding: 0 1rem;
227 | height: 3rem;
228 | line-height: 3;
229 | overflow: hidden;
230 | white-space: nowrap;
231 | text-overflow: ellipsis;
232 | pointer-events: none;
233 | }
234 |
235 | .catalog-post > .postMessage {
236 | font-size: .875rem;
237 | padding: 1rem 1rem 1.5rem;
238 | margin: 0;
239 | flex: 1 1 4.5rem;
240 | overflow: hidden;
241 | order: 4;
242 | word-break: break-word;
243 | }
244 | /*
245 | .catalog-post > .postMessage:empty {
246 | display: none;
247 | }
248 | */
249 | .catalog-replies {
250 | display: none;
251 | order: 6;
252 | }
253 | /*
254 | .catalog-thread:hover .catalog-post > .postMessage {
255 | overflow: auto;
256 | }
257 | */
258 | /**
259 | * idea of a "full card" on hover taken from smashing magazine redesign and also
260 | * 4chan x's catalogue
261 | */
262 |
263 | /*
264 | .article--grid::before {
265 | display: block;
266 | width: calc(100% + 60px);
267 | height: calc(100% + 60px);
268 | height: 100%;
269 | content: "";
270 | position: absolute;
271 | left: -30px;
272 | top: -30px;
273 | transition: background-color .1s ease-out;
274 | background-color: transparent;
275 | padding: 30px;
276 | }
277 | .article--grid:not(.col--article--meow):hover::before {
278 | background-color: #fff;
279 | box-shadow: 0 0 40px rgba(0,0,0,.15);
280 | }
281 |
282 | .article--grid {
283 | display: -ms-flexbox;
284 | display: flex;
285 | -ms-flex-direction: column;
286 | flex-direction: column;
287 | min-height: 0;
288 | padding: 0 1em;
289 | padding-bottom: 150px;
290 | transition: all .2s ease-out;
291 | position: relative;
292 | }
293 | .article--grid:not(.col--article--meow):hover {
294 | transform: scale(1.02);
295 | }
296 | .article--grid__title a {
297 | transition: all .2s ease-out;
298 | color: #111;
299 | text-decoration: none;
300 | padding: 10px 0;
301 | background-image: linear-gradient(#2da2c5,#2da2c5);
302 | background-repeat: no-repeat;
303 | background-size: 100% 1.5px;
304 | background-position: center bottom 29%;
305 | background-origin: padding-box;
306 | text-shadow: 3px 0 #f6f3f2, 2px 0 #f6f3f2, 1px 0 #f6f3f2, -1px 0 #f6f3f2, -2px 0 #f6f3f2, -3px 0 #f6f3f2;
307 | transition: color .1s ease-out;
308 | position: static;
309 | }
310 | .article--grid:hover .article--grid__title a {
311 | color: #d33a2c;
312 | text-decoration: none;
313 | padding: 10px 0;
314 | background-image: linear-gradient(#666,#666);
315 | background-repeat: no-repeat;
316 | background-size: 100% 1.5px;
317 | background-position: center bottom 29%;
318 | background-origin: padding-box;
319 | text-shadow: 3px 0 #fff, 2px 0 #fff, 1px 0 #fff, -1px 0 #fff, -2px 0 #fff, -3px 0 #fff;
320 | transition: color .1s ease-out;
321 | }
322 | */
323 | }
324 |
--------------------------------------------------------------------------------
/previous/ss19-catalog.user.css:
--------------------------------------------------------------------------------
1 | /* ==UserStyle==
2 | @name ss19 catalogue
3 | @namespace github.com/openstyles/stylus
4 | @version 1.0.0
5 | @description A new userstyle
6 | @author Me
7 | ==/UserStyle== */
8 | @-moz-document domain('boards.4chan.org'),
9 | domain('boards.4channel.org'){
10 |
11 | /*
12 | * hides the file thumbnail
13 | */
14 |
15 | :root:not(.catalog-mode) .board [class^=catalog],
16 | .catalog-container > .hide-thread-button,
17 | .catalog-post > .file,
18 | .catalog-post > .postInfo > :not(.subject),
19 | .catalog-post .subject:not(:empty)::after,
20 | :root .catalog-post > .container {
21 | display: none;
22 | }
23 |
24 | /*
25 | .catalog-container:not(:hover) > * > .file,
26 | .catalog-container:not(:hover) > * > .postInfo > :not(.subject),
27 | .catalog-container:not(:hover) > * > .catalog-replies,
28 | .catalog-container:not(:hover) .extra-linebreak,
29 | .catalog-container:not(:hover) .abbr,
30 | :root:not(.catalog-hover-expand) .catalog-container > * > .file,
31 | :root:not(.catalog-hover-expand) .catalog-container > * > .postInfo > :not(.subject),
32 | :root:not(.catalog-hover-expand) .catalog-container > * > .catalog-replies,
33 | :root:not(.catalog-hover-expand) .catalog-container .extra-linebreak,
34 | :root:not(.catalog-hover-expand) .catalog-container .abbr,
35 | .catalog-thread > .catalog-container > :not(.catalog-post),
36 | .catalog-post > .file > :not(.fileText),
37 | .catalog-post > * > .fileText > :not(:first-child),
38 | .catalog-post > .postInfo > :not(.subject):not(.nameBlock):not(.dateTime),
39 | .catalog-post > * > * > .posteruid,
40 | :root.bottom-backlinks .catalog-post > .container,
41 | .post:not(.catalog-post) > .catalog-link,
42 | .post:not(.catalog-post) > .catalog-stats,
43 | .post:not(.catalog-post) > .catalog-replies {
44 | display: none;
45 | }
46 | */
47 | /*
48 | * in catalogue mode, reset the board to take full width
49 | */
50 |
51 | :root.catalog-mode .board {
52 | max-width: none;
53 | padding: 0 3.5rem;
54 | display: grid;
55 | grid-gap: 1rem;
56 | grid-auto-rows: 15rem;
57 | align-items: stretch;
58 | grid-auto-flow: dense;
59 | }
60 |
61 | :root.catalog-mode .board.catalog-small {
62 | grid-template-columns: repeat(12, 1fr);
63 | }
64 |
65 | :root.catalog-mode .board.catalog-large {
66 | grid-template-columns: repeat(8, 1fr);
67 | }
68 |
69 | @media (max-width: 75rem) {
70 | :root.catalog-mode .board.catalog-small {
71 | grid-template-columns: repeat(6, 1fr);
72 | }
73 |
74 | :root.catalog-mode .board.catalog-large {
75 | grid-template-columns: repeat(4, 1fr);
76 | }
77 | }
78 |
79 | /**
80 | * by default, each thread takes up 1 column. we also have to remove the
81 | * `padding` and `margin` we give to normal threads
82 | */
83 |
84 | .catalog-thread {
85 | position: relative;
86 | grid-column: span 1;
87 | padding: 0;
88 | margin: 0;
89 | z-index: 2;
90 | min-height: 15rem;
91 | max-height: 15rem;
92 | /*box-shadow: 0 3px 1px -2px rgba(0,0,0,.2),
93 | 0 2px 2px 0 rgba(0,0,0,.14),
94 | 0 1px 5px 0 rgba(0,0,0,.12);*/
95 | transition: all .25s;
96 | border-radius: 4px;
97 | }
98 |
99 | .catalog-thread.thread--long {
100 | grid-column: span 2;
101 | }
102 |
103 | .catalog-thread.thread--extra-long {
104 | grid-column: span 2;
105 | grid-row: span 2;
106 | max-height: 31rem;
107 | }
108 |
109 | .catalog-post {
110 | display: flex;
111 | flex-direction: column;
112 | align-items: stretch;
113 | position: relative;
114 | box-shadow: none;
115 | transition: all .25s;
116 | min-height: 15rem;
117 | border-radius: 4px;
118 | overflow: hidden;
119 | }
120 |
121 | .catalog-thread.thread--extra-long .catalog-post {
122 | min-height: 31rem;
123 | }
124 |
125 | .catalog-post .postInfo {
126 | background: none;
127 | padding: 0;
128 | order: 3;
129 | position: relative;
130 | line-height: inherit;
131 | height: auto;
132 | }
133 |
134 | .catalog-post .subject:not(:empty) {
135 | color: var(--text-primary-on-dark);
136 | background-color: rgba(0, 0, 0, .5);
137 | display: block;
138 | position: absolute;
139 | top: calc(-1 * (18px + 32px));
140 | width: 100%;
141 | max-width: none;
142 | padding: 0 .5rem;
143 | height: 2rem;
144 | line-height: 2;
145 | letter-spacing: .02em;
146 | overflow: hidden;
147 | white-space: nowrap;
148 | text-overflow: ellipsis;
149 | pointer-events: none;
150 | }
151 |
152 | .catalog-link {
153 | display: block;
154 | position: relative;
155 | order: 1;
156 | border-top-left-radius: 4px;
157 | border-top-right-radius: 4px;
158 | overflow: hidden;
159 | }
160 |
161 | .catalog-stats {
162 | order: 2;
163 | text-align: center;
164 | font-size: .75rem;
165 | }
166 |
167 | .catalog-stats > span[title] {
168 | color: var(--text-hint-on-background);
169 | }
170 |
171 | .catalog-stats > span[title] > span {
172 | color: var(--text-primary-on-background);
173 | }
174 |
175 | .catalog-post:not(:hover) .menu-button {
176 | opacity: 0;
177 | }
178 |
179 | .catalog-icons {
180 | display: inline-block;
181 | transform: scale(.75);
182 | }
183 |
184 | .catalog-stats #menu {
185 | text-align: left;
186 | }
187 |
188 | .catalog-thumb {
189 | object-fit: cover;
190 | object-position: 50% 50%;
191 | width: 100% !important;
192 | height: 7.5rem !important;
193 | }
194 |
195 | .catalog-post > .postMessage {
196 | font-size: .75rem;
197 | letter-spacing: 0.025em;
198 | flex: 1 1 auto;
199 | margin: 0;
200 | order: 4;
201 | padding: .5rem .75rem;
202 | position: relative;
203 | }
204 | /*
205 | .catalog-post::before {
206 | content: '';
207 | display: block;
208 | width: calc(100% + 2rem);
209 | height: calc(100% + 2rem);
210 | position: absolute;
211 | left: -1rem;
212 | top: -1rem;
213 | transition: all .25s ease-out;
214 | background-color: transparent;
215 | padding: 1rem;
216 | border-radius: 3px;
217 | }
218 |
219 | .catalog-post:hover::before {
220 | background-color: #fff;
221 | box-shadow: 0 8px 17px 2px rgba(0,0,0,0.14),
222 | 0 3px 14px 2px rgba(0,0,0,0.12),
223 | 0 5px 5px -3px rgba(0,0,0,0.2);
224 | }
225 | */
226 | .catalog-replies {
227 | font-size: .75rem;
228 | position: relative;
229 | order: 6;
230 | }
231 | /*
232 | .catalog-post:hover {
233 | transform: scale(1.02);
234 | z-index: 1;
235 | }
236 | */
237 | .catalog-container:not(:hover) > * > .file,
238 | .catalog-container:not(:hover) > * > .postInfo > :not(.subject),
239 | .catalog-container:not(:hover) > * > .catalog-replies,
240 | .catalog-container:not(:hover) .extra-linebreak,
241 | .catalog-container:not(:hover) .abbr,
242 | :root:not(.catalog-hover-expand) .catalog-container > * > .file,
243 | :root:not(.catalog-hover-expand) .catalog-container > * > .postInfo > :not(.subject),
244 | :root:not(.catalog-hover-expand) .catalog-container > * > .catalog-replies,
245 | :root:not(.catalog-hover-expand) .catalog-container .extra-linebreak,
246 | :root:not(.catalog-hover-expand) .catalog-container .abbr,
247 | .catalog-thread > .catalog-container > :not(.catalog-post),
248 | .catalog-post > .file > :not(.fileText),
249 | .catalog-post > * > .fileText > :not(:first-child),
250 | .catalog-post > .postInfo > :not(.subject):not(.nameBlock):not(.dateTime),
251 | .catalog-post > * > * > .posteruid,
252 | :root.bottom-backlinks .catalog-post > .container,
253 | .post:not(.catalog-post) > .catalog-link,
254 | .post:not(.catalog-post) > .catalog-stats,
255 | .post:not(.catalog-post) > .catalog-replies {
256 | display: none;
257 | }
258 |
259 | .catalog-replies::before {
260 | content: '';
261 | height: 1px;
262 | width: calc(100% - 1rem);
263 | margin: auto;
264 | background-color: var(--background-outline);
265 | display: block;
266 | }
267 |
268 | .catalog-reply {
269 | white-space: nowrap;
270 |
271 | display: flex;
272 | flex-direction: row;
273 | align-items: stretch;
274 | }
275 | .catalog-reply > * {
276 | padding: 3px;
277 | overflow: hidden;
278 | flex: none;
279 | }
280 | .catalog-reply > span {
281 | font-style: italic;
282 | font-weight: bold;
283 | }
284 | .catalog-reply-excerpt {
285 | -webkit-flex: 1 1 auto;
286 | flex: 1 1 auto;
287 | }
288 |
289 | .catalog-container:not(:hover) {
290 | overflow: hidden;
291 | box-shadow: 0 3px 1px -2px rgba(0,0,0,.2),
292 | 0 2px 2px 0 rgba(0,0,0,.14),
293 | 0 1px 5px 0 rgba(0,0,0,.12);
294 | }
295 |
296 | .catalog-container {
297 | position: absolute;
298 | top: 0;
299 | left: 0;
300 | right: 0;
301 | bottom: 0;
302 | z-index: 9;
303 | }
304 |
305 | .catalog-post {
306 | margin: 0;
307 | overflow: visible;
308 | }
309 |
310 | .catalog-post {
311 | position: absolute;
312 | top: 0;
313 | left: 0;
314 | right: 0;
315 | }
316 |
317 | .catalog-container:hover .catalog-post {
318 | top: .5rem;
319 | margin: -1rem -3rem;
320 | transform: scale(1.02) translateY(-1%);
321 | box-shadow: 0 8px 17px 2px rgba(0,0,0,0.14),
322 | 0 3px 14px 2px rgba(0,0,0,0.12),
323 | 0 5px 5px -3px rgba(0,0,0,0.2);
324 | }
325 |
326 | .catalog-thread:hover {
327 | z-index: 10;
328 | }
329 |
330 | }
331 |
--------------------------------------------------------------------------------
/previous/curabitr2.user.css:
--------------------------------------------------------------------------------
1 | /* ==UserStyle==
2 | @name curabitr 2
3 | @namespace github.com/openstyles/stylus
4 | @version 1.0.0
5 | @description A new userstyle
6 | @author Me
7 | ==/UserStyle== */
8 | @-moz-document domain("boards.4chan.org") {
9 |
10 | /*
11 | aw yeah, google web fonts BITCH
12 | */
13 | @font-face {
14 | font-family: Gudea;
15 | src: url('http://themes.googleusercontent.com/font?kit=thW9JAelqegPZr6cy_hdlJuy9QftGgiCbPT5J2Tle6QGEtCW0q5T6QHEAICoCh1h9R715REvNVFz5maQ3RAjMvuvYlUZxjWJuWoIFYd8ZVs9VGRJmXaKNSd0UG6XHo4E&text') format('woff');
16 | }
17 |
18 | @font-face {
19 | font-family: GudeaBold;
20 | font-weight: 800;
21 | src: url('http://themes.googleusercontent.com/font?kit=6M2RKly85u67vSsXH0-zqihqGa-CSr3nQtF3lrv2wWeu7RP096c_0cFQ7arjjB7ybFaXKHeky_O7IdzbE_trRh2NL1ThVuLv506WDWjwTFK0tkCcv8VGcP6XCC56Ww8-&text') format('woff');
22 | }
23 |
24 | /*
25 | next, we kill the crab (getting rid of shit i don't personally use)
26 | 1) banner and heading
27 | 2) posting mode: reply
28 | 3) [return] [bottom] [top]
29 | 4) bottom navigation
30 | 5) horizontal lines
31 | 6) style changer (you're using this one!) and reporting/post deletion (NO SHAME, NO BLAME)
32 | 7) copyright crap
33 | 8) ads (>not using adblock, >2025)
34 | */
35 | .boardBanner,
36 | /* 1) */
37 | .postingMode,
38 | /* 2) */
39 | .navLinks,
40 | /* 3) */
41 | #boardNavDesktopFoot,
42 | /* 4) */
43 | hr,
44 | /* 5) */
45 | .deleteform,
46 | .stylechanger,
47 | /* 6) */
48 | #absbot,
49 | /* 7) */
50 | img[src^="//static.4chan.org/support/"]/* 8) */
51 | {
52 | display: none!important
53 | }
54 |
55 | /*
56 | postform specific crap (only effects you if you AREN'T using quick reply for some reason)
57 | 1) formally .postblock
58 | 2) recaptcha buttons
59 | 3) more recaptcha stuff
60 | 4) browse button (file input for firefox)
61 | 5) (password used for file deletion)
62 | 6) posting rules
63 | */
64 | #postForm > tbody > tr > td:first-child,
65 | /* 1) */
66 | #recaptcha_table tr[height] > td:not(:first-child),
67 | /* 2) */
68 | #recaptcha_table tr[height] + tr > td:not(:first-child),
69 | /* 3) */
70 | #postForm #postFile > input[type=button],
71 | /* 4) */
72 | #postForm #postPassword + span,
73 | /* 5) */
74 | #postForm .rules/* 6) */
75 | {
76 | display: none!important
77 | }
78 |
79 | /*
80 | general reset:
81 | 1) border-box because fuck you when i say 70 i mean 70
82 | 2) indian red selection (feel free to make highlighed text your own colour)
83 | 3) i don't want no ugly border around focused elements, i'm not blind
84 | 4) font reset (and making sure bold is actual bold, not faux bold)
85 | 5) links
86 | 6) text-shadow for web2.0
87 | */
88 | * {
89 | /* 1) */
90 | -moz-box-sizing: border-box !important;
91 | box-sizing: border-box !important;
92 | }
93 |
94 | ::selection {
95 | /* 2) */
96 | color: #fafafa !important;
97 | background: indianRed !important;
98 | }
99 |
100 | ::-moz-selection {
101 | color: #fafafa !important;
102 | background: indianRed !important;
103 | }
104 |
105 | :focus,
106 | :active {
107 | /* 3) */
108 | outline: 0 !important;
109 | }
110 |
111 | /*
112 | -moz-hyphens:auto;
113 | -ms-hyphens:auto;
114 | -webkit-hyphens:auto;
115 | hyphens:auto;
116 | word-wrap:break-word;
117 | */
118 | html {
119 | word-wrap: break-word;
120 | overflow-wrap: break-word;
121 | overflow-y: scroll;
122 | position: relative;
123 | height: 100%;
124 | }
125 |
126 | body,
127 | span,
128 | div,
129 | input,
130 | textarea,
131 | select,
132 | td,
133 | strong,
134 | a,
135 | big {
136 | /* 4) */
137 | font-family: Gudea, Helvetica, Arial, sans-serif !important;
138 | font-size: 1em !important;
139 | font-weight: 400 !important;
140 | line-height: 1.4 !important;
141 | letter-spacing: .2px;
142 | color: #2d2d2d !important;
143 | vertical-align: baseline !important;
144 | }
145 |
146 | .subject,
147 | .name,
148 | .capcode,
149 | .pages strong,
150 | #boardNavDesktop .current {
151 | font-family: GudeaBold, Helvetica, Arial, sans-serif !important;
152 | font-weight: 800 !important;
153 | }
154 |
155 | a {
156 | /* 5) */
157 | color: cornflowerBlue !important;
158 | text-decoration: none !important;
159 | }
160 |
161 | blockquote {
162 | /* 6) */
163 | text-shadow: 0 1px 1px #fafafa;
164 | }
165 |
166 | .abbr,
167 | .summary {
168 | color: #ababab !important;
169 | }
170 |
171 | .spoiler {
172 | text-shadow: none;
173 | background: #2d2d2d !important;
174 | border-radius: 3px;
175 | -moz-transition: color .1s;
176 | }
177 |
178 | .spoiler:hover {
179 | color: #fafafa !important;
180 | }
181 |
182 | /*
183 | the meaty part (vanilla 4chan only)
184 | */
185 | body {
186 | /*background-color:
187 | background-image:
188 | background-position:
189 | background-repeat:
190 | background-attachment:*/
191 | padding: 0 !important;
192 | margin: 0 !important;
193 | position: relative;
194 | height: 100%;
195 | }
196 |
197 | body {
198 | /* this means no harmony */
199 | background-size: calc(10 * 0.5px) calc(10 * 0.5px), cover;
200 | background-image: radial-gradient(#ddd 0.5px, transparent 0.5px), -webkit-radial-gradient(50% 50%, circle cover, #fafafa, #ededed 100%) !important;
201 | background-attachment: fixed !important;
202 | background-repeat: repeat !important;
203 | /* but what is that you say? you want harmony? uncomment the following line for permanent harmony oh love */
204 | /*background: url("http://static.4chan.org/image/tmp/rainbow.gif") repeat scroll 0 0 #EEF2FF !important;*/
205 | }
206 |
207 | /*
208 | body::after {
209 | content: '';
210 | display: block;
211 | height: 935px;
212 | width: 715px;
213 | background: url('file:///W:/curabitr/ANIME.png');
214 | position: fixed;
215 | bottom: -250px;
216 | right: -100px;
217 | pointer-events: none;
218 | z-index: 2;
219 | opacity: .2;
220 | }
221 | */
222 | /*url('file:///W:/curabitr/ANIME.png'),*/
223 | /*
224 | navigation
225 | */
226 | #boardNavDesktop {
227 | font-size: 12px !important;
228 | position: fixed;
229 | /*bottom: 0;
230 | left: 0;*/
231 | width: 100%;
232 | color: #bababa !important;
233 | background-image: -moz-linear-gradient(#4c4c4c, #2d2d2d);
234 | text-align: center;
235 | padding-bottom: 2px;
236 | box-shadow: 0 1px 10px rgba(0, 0, 0, .25);
237 | z-index: 5;
238 | -moz-user-select: none;
239 | /*-moz-transition: left .2s ease-in-out;*/
240 | }
241 |
242 | /*
243 | #boardNavDesktop:not(:hover) {
244 | left: -95%;
245 | border-radius: 5px;
246 | }
247 | */
248 | #boardNavDesktop a {
249 | color: #fafafa !important;
250 | -moz-transition: text-shadow .2s ease-in-out;
251 | }
252 |
253 | #boardNavDesktop a:hover {
254 | text-shadow: 0 0 1px #fafafa;
255 | }
256 |
257 | #navtopr {
258 | float: none !important;
259 | }
260 |
261 | /*
262 | #boardNavDesktop {
263 | font-size: 0 !important;
264 | color: transparent !important;
265 | position: fixed;
266 | width: 100%;
267 | text-align: center;
268 | background: black;
269 | padding-bottom: 2px;
270 | box-shadow: 0 2px 10px rgba(0,0,0,.25);
271 | z-index: 5;
272 | opacity: .25;
273 | -moz-transition: opacity .1s ease-in-out;
274 | }
275 |
276 | #boardNavDesktop:hover {
277 | opacity: .75;
278 | }
279 |
280 | #boardNavDesktop a {
281 | font-size: 14px !important;
282 | color: #fafafa !important;
283 | -moz-transition: text-shadow .2s ease-in-out;
284 | }
285 |
286 | #boardNavDesktop a:hover {
287 | text-shadow: 0 0 1px #fafafa;
288 | }
289 |
290 | #navtopr {
291 | float: none !important;
292 | }*/
293 | /*
294 | #boardNavDesktop {
295 | position: fixed;
296 | width: 100%;
297 | text-align: center;
298 | background: black;
299 | padding-bottom: 2px;
300 | box-shadow: 0 2px 10px rgba(0,0,0,.25);
301 | z-index: 5;
302 | opacity: .25;
303 | -moz-transition: opacity .1s ease-in-out;
304 | }
305 |
306 | #boardNavDesktop:hover {
307 | opacity: .75;
308 | }
309 |
310 | #boardNavDesktop a {
311 | color: #fafafa !important;
312 | -moz-transition: text-shadow .2s ease-in-out;
313 | }
314 |
315 | #boardNavDesktop a:hover {
316 | text-shadow: 0 0 1px #fafafa;
317 | }
318 | */
319 | #navtopr {
320 | font-size: 0 !important;
321 | color: transparent !important;
322 | float: none !important;
323 | }
324 |
325 | #navtopr > a:first-child::before {
326 | content: '';
327 | font-family: Webdings !important;
328 | font-size: 16px !important;
329 | color: #fafafa !important;
330 | }
331 |
332 | /* 4chan s */
333 | /*
334 | #boardNavDesktop {
335 | position: fixed !important;
336 | top: 0 !important;
337 | left: 0 !important;
338 | right: 0 !important;
339 | padding: 5px;
340 | color: #aaa !important;
341 | text-align: center !important;
342 | background-image: -webkit-linear-gradient(#3d3d3d,#2d2d2d);
343 | background-image: -moz-linear-gradient(#3d3d3d,#2d2d2d);
344 | box-shadow: 0 1px 3px rgba(0,0,0,.25);
345 | z-index: 2;
346 | -webkit-user-select: none;
347 | -moz-user-select: none;
348 | user-select: none;
349 | }
350 |
351 | #boardNavDesktop a {
352 | color: #fafafa !important;
353 | padding: 0 !important;
354 | }
355 |
356 | #boardNavDesktop a:hover {
357 | text-shadow: 0 0 3px rgba(255,255,255,.75), 0 0 5px rgba(255,255,255,.5);
358 | }
359 |
360 | #boardNavDesktop, #navtopr {
361 | float: none !important;
362 | }
363 |
364 | .current {
365 | font-weight: bold !important;
366 | text-shadow: 0 0 3px rgba(255,255,255,.75), 0 0 5px rgba(255,255,255,.5);
367 | }
368 | */
369 | /* 4chan s' hidden menu */
370 | .hidemeaway {
371 | position: relative;
372 | cursor: pointer;
373 | color: #bababa !important;
374 | }
375 |
376 | .hiddenmenu {
377 | display: none;
378 | position: absolute;
379 | background: #2d2d2d;
380 | box-shadow: 0 0 3px rgba(0, 0, 0, .25);
381 | top: 100%;
382 | left: 0;
383 | width: 82px;
384 | padding: 5px 0;
385 | }
386 |
387 | .hiddenmenu a {
388 | display: block;
389 | }
390 |
391 | .hidemeaway:hover .hiddenmenu {
392 | display: block;
393 | }
394 |
395 | /*
396 | ensure space between navigation and content
397 | */
398 | #mpostform + div {
399 | height: 50px;
400 | position: static !important;
401 | }
402 |
403 | /*
404 | postarea/postform
405 | */
406 | #postForm {
407 | position: fixed;
408 | right: 1%;
409 | bottom: 1%;
410 | }
411 |
412 | .closed {
413 | font-size: 2em !important;
414 | padding: 50px 0 10px 0 !important;
415 | }
416 |
417 | /*
418 | announcements
419 | */
420 | .globalMessage {
421 | text-shadow: 0 1px 1px #fafafa;
422 | width: 90%;
423 | margin: auto;
424 | }
425 |
426 | .globalMessage strong,
427 | .globalMessage big {
428 | color: #dd3434 !important;
429 | }
430 |
431 | .globalMessage a {
432 | color: #0050b3 !important;
433 | }
434 |
435 | #globalToggle {
436 | display: block !important;
437 | width: 300px;
438 | margin: 0 auto;
439 | text-align: center;
440 | color: #fafafa !important;
441 | background: -moz-linear-gradient(#e01919, #aa1111);
442 | border-radius: 3px;
443 | padding: 4px 0 5px;
444 | }
445 |
446 | .globalMessage.hideMobile {
447 | display: none;
448 | }
449 |
450 | /*
451 | main board
452 | */
453 | #delform {
454 | width: 80%;
455 | margin: 30px auto;
456 | }
457 |
458 | .thread::before,
459 | .thread::after,
460 | .op::before,
461 | .op::after {
462 | content: '';
463 | display: table;
464 | }
465 |
466 | .thread::after,
467 | .op::after {
468 | clear: both;
469 | }
470 |
471 | .thread {
472 | margin: 10px 0 !important;
473 | }
474 |
475 | .thread:first-of-type {
476 | margin-top: 0 !important;
477 | }
478 |
479 | .thread:last-of-type {
480 | margin-bottom: 0 !important;
481 | }
482 |
483 | .fileThumb,
484 | .fileThumb img {
485 | margin: 0 !important;
486 | }
487 |
488 | /*
489 | replies
490 | */
491 | .opContainer {
492 | margin-bottom: 5px;
493 | }
494 |
495 | .replyContainer {
496 | position: relative;
497 | }
498 |
499 | .useremail .name,
500 | .useremail .postertrip {
501 | color: #0050b3 !important;
502 | }
503 |
504 | .fileThumb {
505 | padding: 5px;
506 | background: #ffffff;
507 | border: 1px solid #e3e3e3;
508 | border-radius: 5px;
509 | box-shadow: 0 0 0 rgba(0, 0, 0, .25);
510 | -moz-transition: box-shadow .2s ease-in-out;
511 | }
512 |
513 | .fileThumb:hover {
514 | box-shadow: 0 0 2px rgba(0, 0, 0, .25);
515 | }
516 |
517 | /* get rid of fancy border around expanded images */
518 | .image_expanded .fileThumb {
519 | padding: 0;
520 | box-shadow: none;
521 | border: 0;
522 | border-radius: 0;
523 | }
524 |
525 | .postNum {
526 | font-size: 0 !important;
527 | color: transparent !important;
528 | }
529 |
530 | .postNum > a:not(:first-child) {
531 | font-size: 16px !important;
532 | color: cornflowerBlue !important;
533 | }
534 |
535 | .postNum > a:first-child::after {
536 | content: '#';
537 | font-size: 16px !important;
538 | color: cornflowerBlue !important;
539 | }
540 |
541 | .postNum > a.replylink {
542 | font-size: 14px !important;
543 | color: #2d2d2d !important;
544 | /* okay for some nigger reason i need to have the extra a (although i think i know why) */
545 | text-transform: lowercase;
546 | text-shadow: 0 1px 1px rgba(255, 255, 255, .9);
547 | display: inline-block;
548 | padding: 3px 7px;
549 | margin: 0 5px;
550 | background: -webkit-linear-gradient(#fafafa, #e3e3e3);
551 | background: -moz-linear-gradient(#fafafa, #e3e3e3);
552 | box-shadow: 0 1px 2px rgba(0, 0, 0, .2);
553 | border: 1px solid #bbb;
554 | border-radius: 5px;
555 | cursor: pointer;
556 | }
557 |
558 | .replylink:hover {
559 | box-shadow: 0 1px 3px rgba(0, 0, 0, .2);
560 | }
561 |
562 | .replylink:active {
563 | background-image: -webkit-linear-gradient(#e3e3e3, #fafafa);
564 | background-image: -moz-linear-gradient(#e3e3e3, #fafafa);
565 | position: relative;
566 | top: 1px;
567 | }
568 |
569 | /*
570 | span[id^="nothread"] a:nth-of-type(3) {
571 | font-family: Helvetica, Arial, sans-serif;
572 | font-size: 11pt;
573 | text-transform: lowercase;
574 | text-shadow: 0 1px 1px rgba(255,255,255,.9);
575 | color: #555 !important;
576 | display: inline-block;
577 | padding: 3px 7px;
578 | margin: 0 5px;
579 | background: -webkit-linear-gradient(#fafafa,#e3e3e3);
580 | background: -moz-linear-gradient(#fafafa,#e3e3e3);
581 | box-shadow: 0 1px 2px rgba(0,0,0,.2);
582 | border: 1px solid #bbb;
583 | border-radius: 5px;
584 | outline: 0;
585 | cursor: pointer;
586 | }
587 |
588 | span[id^="nothread"] a:nth-of-type(3):hover {
589 | box-shadow: 0 1px 3px rgba(0,0,0,.2);
590 | }
591 |
592 | span[id^="nothread"] a:nth-of-type(3):active {
593 | background-image: -webkit-linear-gradient(#e3e3e3,#fafafa);
594 | background-image: -moz-linear-gradient(#e3e3e3,#fafafa);
595 | position: relative;
596 | top: 1px;
597 | }
598 | */
599 | /*.useremail:hover::after {content: attr(href);}*/
600 | .postMessage > br + br + strong[style] {
601 | color: #dd3434 !important;
602 | }
603 |
604 | a.summary {
605 | display: inline-block;
606 | margin-left: 10px;
607 | position: relative;
608 | top: 1px;
609 | background: #fafafa;
610 | font-size: .9em !important;
611 | padding: 0 3px;
612 | border-top-left-radius: 5px;
613 | border-top-right-radius: 5px;
614 | border: 1px solid #e6e6e6;
615 | border-bottom: 0;
616 | }
617 |
618 | .postertrip {
619 | font-family: monospace !important;
620 | font-size: 1.2em !important;
621 | }
622 |
623 | .dateTime {
624 | color: #bababa !important;
625 | }
626 |
627 | .quote {
628 | color: #5c9e0f !important;
629 | }
630 |
631 | /*
632 | .op .file {
633 | float: right !important;
634 | }
635 | */
636 | .fileInfo {
637 | margin: 0 !important;
638 | }
639 |
640 | /*
641 | .fileInfo > a {
642 | font-size: 0 !important;
643 | color: transparent !important;
644 | -moz-transition: all .2s;
645 | }
646 |
647 | .fileInfo:hover > a {
648 | font-size: .8em !important;
649 | color: cornflowerBlue !important;
650 | }
651 | */
652 | .fileInfo > a {
653 | font-size: .75em !important;
654 | }
655 |
656 | .subject {
657 | color: #696969 !important;
658 | }
659 |
660 | .sideArrows {
661 | display: none;
662 | }
663 |
664 | .sideArrows.hide_reply_button {
665 | display: block;
666 | font-size: 12px !important;
667 | position: absolute;
668 | top: 1px;
669 | right: 3px;
670 | margin: 0 !important;
671 | opacity: 0;
672 | -moz-transition: opacity .3s ease-in-out;
673 | }
674 |
675 | .op .fileThumb {
676 | float: right !important;
677 | }
678 |
679 | .post.reply .fileThumb {
680 | margin-right: 5px !important;
681 | }
682 |
683 | .postContainer:hover .sideArrows.hide_reply_button {
684 | opacity: .5;
685 | }
686 |
687 | .stub + .sideArrows + .post {
688 | display: none !important;
689 | }
690 |
691 | .post input {
692 | display: none;
693 | }
694 |
695 | .post {
696 | margin: 0 !important;
697 | }
698 |
699 | .post.reply {
700 | clear: both;
701 | display: block !important;
702 | background: #fafafa !important;
703 | padding: 3px 0 3px 10px !important;
704 | border: 1px solid #e6e6e6 !important;
705 | border-bottom: 0 !important;
706 | -moz-transition: background .5s ease-in-out;
707 | }
708 |
709 | .post.reply.highlight {
710 | background: #efefef !important;
711 | }
712 |
713 | .thread .replyContainer:last-child .post.reply {
714 | border-bottom: 1px solid #e3e3e3 !important;
715 | }
716 |
717 | .postMessage {
718 | margin: 0 !important;
719 | }
720 |
721 | /*
722 | /g/ [code] tags
723 | */
724 | .prettyprint {
725 | background-color: #151717 !important;
726 | padding: 5px !important;
727 | margin: 0;
728 | text-shadow: none;
729 | white-space: pre-wrap;
730 | border-radius: 5px;
731 | }
732 |
733 | .prettyprint span {
734 | font-family: monospace !important;
735 | color: #fafafa !imporant;
736 | /* so that when .prettyprint loads */
737 | }
738 |
739 | .prettyprint .str {
740 | color: #edd400 !important;
741 | }
742 |
743 | /* string - butter2 */
744 | .prettyprint .kwd {
745 | color: #fff !important;
746 | font-weight: bold !important;
747 | }
748 |
749 | /* keyword - white */
750 | .prettyprint .com {
751 | color: #888a85 !important;
752 | }
753 |
754 | /* comment - aluminum4 */
755 | .prettyprint .typ {
756 | color: #8ae234 !important;
757 | font-weight: bold !important;
758 | }
759 |
760 | /* type - chameleon1 */
761 | .prettyprint .lit {
762 | color: #edd400 !important;
763 | }
764 |
765 | /* literal - butter2 */
766 | .prettyprint .pun {
767 | color: #d3d7cf !important;
768 | }
769 |
770 | /* punctuation - aluminium2 */
771 | .prettyprint .pln {
772 | color: #d3d7cf !important;
773 | }
774 |
775 | /* plaintext - aluminium2 */
776 | .prettyprint .tag {
777 | color: #729fcf !important;
778 | }
779 |
780 | /* html/xml tag - skyblue1 */
781 | .prettyprint .atn {
782 | color: #8ae234 !important;
783 | font-weight: bold !important;
784 | }
785 |
786 | /* html/xml attribute name - chameleon1 */
787 | .prettyprint .atv {
788 | color: #edd400 !important;
789 | }
790 |
791 | /* html/xml attribute value - butter2 */
792 | .prettyprint .dec {
793 | color: #ce5c00 !important;
794 | }
795 |
796 | /* decimal - orange3 */
797 | /*
798 | pages
799 | */
800 | .pagelist .next,
801 | .pagelist .prev {
802 | display: none;
803 | }
804 |
805 | .pagelist {
806 | background: none !important;
807 | padding: 0 !important;
808 | border: 0 !important;
809 | margin-bottom: 30px !important;
810 | float: none !important;
811 | word-spacing: 10px;
812 | text-align: center;
813 | overflow: visible !important;
814 | }
815 |
816 | .pagelist .pages {
817 | padding: 0 !important;
818 | float: none !important;
819 | font-size: 0 !important;
820 | color: transparent !important;
821 | }
822 |
823 | .pagelist .pages strong,
824 | .pagelist .pages a {
825 | display: inline-block;
826 | font-size: 16px !important;
827 | color: #2d2d2d !important;
828 | min-width: 20px;
829 | padding: 3px 7px 1px 8px;
830 | border-radius: 5px;
831 | box-shadow: 0 1px 2px rgba(0, 0, 0, .4);
832 | -webkit-transition: box-shadow .2s;
833 | -moz-transition: box-shadow .2s;
834 | transition: box-shadow .2s;
835 | }
836 |
837 | .pagelist .pages a {
838 | background-image: -webkit-linear-gradient(#fafafa, #e3e3e3);
839 | background-image: -moz-linear-gradient(#fafafa, #e3e3e3);
840 | background-image: linear-gradient(#fafafa, #e3e3e3);
841 | }
842 |
843 | .pagelist .pages strong {
844 | color: #e3e3e3 !important;
845 | background-image: -webkit-linear-gradient(#3d3d3d, #2d2d2d);
846 | background-image: -moz-linear-gradient(#3d3d3d, #2d2d2d);
847 | background-image: linear-gradient(#3d3d3d, #2d2d2d);
848 | }
849 |
850 | .pages a:hover {
851 | box-shadow: 0 1px 4px rgba(0, 0, 0, .75);
852 | }
853 |
854 | /*
855 | 4chan x specific
856 | */
857 | #overlay {
858 | z-index: 10 !important;
859 | background-image: -moz-radial-gradient(50% 50%, circle cover, rgba(50, 50, 50, .5), rgba(0, 0, 0, .75) 100%) !important;
860 | }
861 |
862 | #options {
863 | background-color: #ededed !important;
864 | border-radius: 5px;
865 | width: 75% !important;
866 | height: 75%;
867 | vertical-align: middle !important;
868 | }
869 |
870 | #content {
871 | height: 95% !important;
872 | }
873 |
874 | form[name=post] > h1 {
875 | display: none;
876 | }
877 |
878 | .reply.dialog {
879 | border: 0 !important;
880 | }
881 |
882 | .hide_thread_button > span {
883 | background-image: -moz-linear-gradient(#fafafa, #e3e3e3);
884 | margin-right: 5px;
885 | text-align: center;
886 | padding: 2px 4px;
887 | border-radius: 5px;
888 | box-shadow: 0 1px 2px rgba(0, 0, 0, .4);
889 | }
890 |
891 | .hide_reply_button.stub {
892 | background: #fafafa;
893 | border: 1px solid #e6e6e6;
894 | border-bottom: 0;
895 | }
896 |
897 | .thread .replyContainer:last-child .hide_reply_button.stub {
898 | border-bottom: 1px solid #e6e6e6;
899 | }
900 |
901 | .hide_reply_button.stub > a {
902 | display: block;
903 | padding: 3px 0 3px 10px;
904 | }
905 |
906 | .hide_reply_button.stub > a > span {
907 | display: none;
908 | }
909 |
910 | .post.reply.highlight {
911 | background: #efefef !important;
912 | }
913 |
914 | .thread .replyContainer:last-child .post.reply {
915 | border-bottom: 1px solid #e3e3e3 !important;
916 | }
917 |
918 | #stats {
919 | font-size: 12px !important;
920 | top: 3px !important;
921 | left: auto !important;
922 | right: 20px !important;
923 | width: 60px;
924 | text-align: right;
925 | z-index: 6;
926 | }
927 |
928 | #stats > .move {
929 | color: #fafafa !important;
930 | cursor: default !important;
931 | }
932 |
933 | #postcount,
934 | #imagecount {
935 | color: #fafafa !important;
936 | }
937 |
938 | #watcher {
939 | position: fixed !important;
940 | width: 200px;
941 | background: #fafafa !important;
942 | border-radius: 5px;
943 | opacity: .5;
944 | box-shadow: 0 2px 4px rgba(0, 0, 0, .25);
945 | z-index: 2;
946 | }
947 |
948 | #watcher:hover {
949 | opacity: .9;
950 | }
951 |
952 | #watcher > div {
953 | color: #bbb !important;
954 | }
955 |
956 | #watcher > .move {
957 | text-align: center;
958 | text-decoration: none !important;
959 | text-transform: lowercase;
960 | }
961 |
962 | #watcher > div > a:first-child {
963 | color: #dd3434 !important;
964 | }
965 |
966 | #imgControls {
967 | height: 0;
968 | }
969 |
970 | #imageType {
971 | display: none;
972 | }
973 |
974 | #imgControls > label {
975 | font-size: 0 !important;
976 | color: transparent !important;
977 | }
978 |
979 | #imageExpand {
980 | position: fixed;
981 | top: 6px;
982 | right: 5px;
983 | z-index: 6;
984 | -moz-appearance: none;
985 | height: 10px;
986 | width: 10px;
987 | border: 1px solid rgba(0, 0, 0, .5) !important;
988 | background: #fafafa !important;
989 | border-radius: 3px !important;
990 | margin: 0;
991 | }
992 |
993 | .container {
994 | display: block;
995 | font-size: .8em !important;
996 | line-height: .8 !important;
997 | color: #bababa !important;
998 | margin-left: 5px;
999 | }
1000 |
1001 | .container::before {
1002 | content: 'le quoted by: ';
1003 | }
1004 |
1005 | .container::after {
1006 | content: '.';
1007 | }
1008 |
1009 | .container .backlink:not(:only-child):not(:last-child)::after {
1010 | content: ',';
1011 | }
1012 |
1013 | #updater {
1014 | font-size: 12px !important;
1015 | top: auto !important;
1016 | left: auto !important;
1017 | bottom: 0 !important;
1018 | right: 5px !important;
1019 | }
1020 |
1021 | #updater #count:not(.new):not(.error) {
1022 | display: none;
1023 | }
1024 |
1025 | #updater #count.new {
1026 | color: limeGreen !important;
1027 | background: none !important;
1028 | }
1029 |
1030 | #qr {
1031 | right: 5px !important;
1032 | bottom: 5px !important;
1033 | top: auto !important;
1034 | left: auto !important;
1035 | background: none !important;
1036 | opacity: .3;
1037 | -moz-transition: opacity .2s ease-in-out;
1038 | }
1039 |
1040 | #qr:hover {
1041 | opacity: .8;
1042 | }
1043 |
1044 | #qr > .move > #autohide,
1045 | #qr > .move > span,
1046 | /*#qr:not(:hover) > form,*/
1047 | #qr [type=file] > [type=button] {
1048 | display: none;
1049 | }
1050 |
1051 | #qr > .move {
1052 | color: #bbb !important;
1053 | text-transform: lowercase;
1054 | text-align: center;
1055 | cursor: default !important;
1056 | }
1057 |
1058 | /*
1059 | #qr {
1060 | opacity: .3;
1061 | background: none !important;
1062 | z-index: 6;
1063 | -moz-transition: opacity .2s ease-in-out;
1064 | }
1065 |
1066 | #qr:hover {
1067 | opacity: .8;
1068 | }
1069 |
1070 | #qr > .move {
1071 | display: none;
1072 | }
1073 |
1074 | #qr .field {
1075 | border: 1px solid #bbb !important;
1076 | padding: 0;
1077 | background: #fafafa;
1078 | }
1079 |
1080 | #qr .field:focus {
1081 | border: 1px solid cornflowerBlue !important;
1082 | }
1083 |
1084 | #qr textarea.field {
1085 | min-height: 200px !important;
1086 | resize: vertical;
1087 | }
1088 |
1089 | #qr [type=file] > [type=button] {
1090 | display: none;
1091 | }
1092 |
1093 | #qr [type=file] {
1094 | width: 30% !important;
1095 | margin: 0 !important;
1096 | }
1097 |
1098 | #qr [type=submit] {
1099 | -moz-appearance: none;
1100 | width: 30% !important;
1101 | padding: 0 !important;
1102 | border: 0;
1103 | margin: 0 !important;
1104 | }
1105 | */
1106 | #qp {
1107 | background: #fafafa !important;
1108 | box-shadow: 0 0 5px rgba(0, 0, 0, .25);
1109 | opacity: .95;
1110 | padding: 3px 10px !important;
1111 | border-radius: 1px;
1112 | }
1113 |
1114 | #qp .post {
1115 | padding: 0 !important;
1116 | border: 0 !important;
1117 | margin: 0 !important;
1118 | }
1119 |
1120 | .qphl {
1121 | outline: 0 !important;
1122 | }
1123 |
1124 | .qphl.reply {
1125 | background: #e6e6e6 !important;
1126 | }
1127 |
1128 | /*.sideArrows.hide_reply_button {
1129 | display: block;
1130 | font-size: 12px !important;
1131 | position: absolute;
1132 | top: 1px;
1133 | right: 3px;
1134 | margin: 0 !important;
1135 | opacity: 0;
1136 | -moz-transition: opacity .3s ease-in-out;
1137 | }
1138 |
1139 | .postContainer:hover .sideArrows.hide_reply_button {
1140 | opacity: .5;
1141 | }*/
1142 | .menu_button {
1143 | font-size: 12px !important;
1144 | color: #2d2d2d !important;
1145 | position: absolute;
1146 | top: 1px;
1147 | right: 25px;
1148 | opacity: 0;
1149 | -moz-transition: opacity .3s ease-in-out;
1150 | }
1151 |
1152 | .postContainer:hover .menu_button {
1153 | opacity: .5;
1154 | }
1155 |
1156 | /* yay, filters */
1157 | .filter_highlight {
1158 | box-shadow: none !important;
1159 | }
1160 |
1161 | .filter_highlight .postMessage {
1162 | text-decoration: underline;
1163 | -moz-text-decoration-color: indianRed;
1164 | }
1165 |
1166 | .seaweed .reply,
1167 | #qp.seaweed {
1168 | background: -moz-linear-gradient(to right, #fafafa, #f7d79a) !important;
1169 | }
1170 |
1171 | .zixaphir .reply {
1172 | background: -moz-linear-gradient(to right, #fafafa, #7f89bd) !important;
1173 | }
1174 |
1175 | .sax .reply {
1176 | background: -moz-linear-gradient(to right, #fafafa, #c5e6ee) !important;
1177 | }
1178 |
1179 | .mayhem .reply {
1180 | background: -moz-linear-gradient(to right, #fafafa, #cd93de) !important;
1181 | }
1182 |
1183 | .mod .reply {
1184 | background: -moz-linear-gradient(to right, #fafafa, #c647c6) !important;
1185 | }
1186 |
1187 | .moot .reply {
1188 | background: -moz-linear-gradient(to right, #fafafa, #cc0000) !important;
1189 | }
1190 |
1191 | .large.mb .fileThumb {
1192 | background: skyBlue;
1193 | }
1194 |
1195 | .match .fileThumb {
1196 | background: yellowGreen;
1197 | }
1198 |
1199 | .large .fileThumb {
1200 | background: indianRed;
1201 | }
1202 |
1203 | /*
1204 | @media (min-width: 960px) {}
1205 |
1206 | page is BIGGER than 960px
1207 |
1208 | ----------------------------------------
1209 |
1210 | @media (max-width: 960px) {}
1211 |
1212 | page is SMALLER than 960px
1213 |
1214 | */
1215 | }
1216 |
--------------------------------------------------------------------------------
/previous/curabitr1.user.css:
--------------------------------------------------------------------------------
1 | /* ==UserStyle==
2 | @name curabitr 1
3 | @namespace github.com/openstyles/stylus
4 | @version 1.0.0
5 | @description A new userstyle
6 | @author Me
7 | ==/UserStyle== */
8 | @-moz-document domain("boards.4chan.org") {
9 |
10 | /* defaultan */
11 | body {
12 | background: #ebebeb url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAACmdJREFUeNpsmttyIzcMRHs4HM5FdmX//9+2Km/7nFjS3Id5cA62pcRVrvVKIxIEGo0GqObXr191nmdJ0nmeattW13XpOA7lnHUch0opuq4rnum6TpLUtq32fVfOWSklXdcVz+WcdZ6naq06zzPen6ZJ67rqui7VWtU0jSSp1qppmnS/39V1nUopWtdVKSUdxyFJ6rpOOWft+66madQ0jdZ1/d5/WRat66pt21Rr1bZtL4tjzHEc6rpObdsqpaRt28Kgfd+1bZuu69K2bUopqdaqtm1Va1VKSW3bqm1bLcsSTsConLPattW6rhqGIRx2XVcchv8/n08dx6HrujTPs3LOkqTmzz//rBhJFM7zFD94ks3ZhOjVWuOX93FCSkmStK6ruq4LL7phOCvnrFqrSinKOYeDcG7OOQ58HEc4vu/7b+ft+x7hW5blJTK11ggjB+CZcRx1HIdSSmEEXpekpmlUa43Q8ytJ8zyHs9q21TiOSimplBKRnudZtVZJUiklDrzvu/Z918fHh1JKaprm+/M5ZzVNo33fNQxDQGccx/AgHriu6+W9cRxjg/M84xkMxhkpJc3zHB4mIhyW6OIEnLOuaxyWiKaU1HWdzvPUMAzquu4bYsCqlBKL930fWOZ1Pog3I8n+9Qoh3rYtyIDInOepvu/Dw03TvOy377v6vo/PsHff92qaRsuyBCrIN/LHIpoCq0RjWZb/5EMpRff7PRbCQPLn8XiolKK+71/w3vd94LrWquu64rPAiwhh2DAMSilpmiY1TaNpmiIi5CN5Z4SSgi5ZELgBEbzIs8/n8yXEwBJDl2WJDTkAFA4kiTa54w5iv8fjEbDGaQ5BJ4wMXW7bFg8RcvCOR3lNUtQMFoV6JWmaJtVatSyLuq4LQzD08XiEkyAb8qfv+3AYOQmkQQz7eplI5Eff97EonvOEBd8ku0Pmuq6I5DiOOs9Tj8cjIobXj+MIYyhy4B2iYT1KATZAAHzOc0bSN2sRolLKSy05jiMY6rquoFw2khSQImnneQ5HYCSRghi6rgvME3FQQLWepikMXtf1xfsQBYfYtk3pOI6ADThl02EY4gBUZWBQSoli9451aHPfd91uN31+fkYir+uqfd8jd9ibz5JnrOHO3Pc9HAwl837GQ7zJv0AJj3JAvAHc+CxG/fHHH9q2TfM86ziOkBRsDANSdDksB4AUiBgQdj1GvXo8HhHNfBzHS3Hq+17Xdel2uwkxyUGu69L9fn8Rk0AMA0lKj5BLjr7vwxHUim3bNE1TQBbjML7ruhCT/hp7p5SU4WIwBybJBRd8/O0HhvGAGj8w3jzPGoYh8oR8BK44ZFmWyK2Pjw89n8+oNyR70zSxFzAnfxMRwUvLskRBIynZzIUheMWzzmq1VuWcQ+yRlLAdeYTXn89nOAZ69vV5DpXOc/u+/xa3bFRKCSO6rguKxLP3+z3kArIGSFJAyRs2gJaRM14zOBBK4PF4hCQh+t7XsB7RYH8KclqWJRaAeoEBBgEnF4p4nUOzEewErfIspAEkUNusTw7iFPJynufIjWEYorE7jiP0Wdd1ShhMxcazQIGq7CoZZvHqDuTattW2bYLWkT2s6d6WpL/++usl6Z/Pp/Z9148fPyIfWJ/okM8QyXmeStQPihHU5xvz44ZhkHM7lRgtBa6JjhuFMUAMdf1en8gRYI4SIQ0goMSihNJZisPt+/7yGjUDY8AwUJznOZ6DsaByL2xN02gYBi3L8tLAIZd8PtB1XTRVtOfQ+jiOan7+/FmdBbque2GFaZpC0LEJEeHwpZTYGByTZ/4cdMseVHqMZV1+5nkO1UBkcC45RUokKrUXGx78/PwMT8EufiiSGZlRSgnp/U7d7z3/OI5xGIzBeJ6dpimIgUPiSH5YK1GI3ttNN9A7vfccIq/O84zGiy6RzpCDQb/UCvYg/3LOKqW8zANchyFLcOh5nvr8/PxmQk7pyeqdH7TsYWYA4T1Fzlm3200pJd1ut6Bjiii065H06QmtcNu2ut/vLwXR1TXjIo/gtm3K76MblwLuJSoqi95ut6BKl/3oJWci+g0kDa00ycrengPTNP1vrwMiXD41TfOdI94o8aALPzDqzb9HBDj65+i9PcJAq5QSeecTTJxYa9Xz+Qw9RtGlxabZo4FrmkaJOZJXWafgbdvU933glueBGNUVvAM/VLN7PKaC/+adC0r24mAoa+CFY8gpahKqJHlFBh5eJ6i4MBtec4kAXfswAtaChuk9fKRKQQWaRBJH0hlCs9gD8XiuJa+0XvB4zQcMPuIhX/Cg/83m6C401DiOEUmchlEoDOTP/X6PhPaGzEdUPmFJXrxcilzXFUyCQKSy4nGfspOkLk0YRCDbgRC5RJ3wCD0ej4AO0YJ0GKXifOzIOSuDU97AGHQOi/FLwrqHvCr75N4TeBzH6MMxEuh4xG+3WzjSycUhCOWTJ/M8/56i0Ie44T4WXdc1GMKnJChnIDRN0wvTQbvUClcQwAJHeC4Bqa+vrxfCIIeYJ2/b9j2ZhE1qrdHMU3kx2u9MjuOIVtj7aKTE19fXf0Y79OE+0+q6Lkaj5KQPzYHsOI4xiCBvKa7OrIms9/ELSXi73ZRz1jAML4NnZDTw8UgyRgJmXm98yOE55e0yTns+n0E2wJPPMxMG2td1KVG0vEeHStFhDN3wLLnEa/QOHA6nUGiJOlIFw5nsEyV0FY7wobrPBDzqATcuVDyROaUbQTfmDRVeJSdcnoBhNuTKgUsdVwLemVIzXqaI/8II2h3HMWRTKeW7vtHCIk2Q6X4VADs4W7mUgdMZKjgBsDZ9iw+0/ZrOr+a8IaPd9v6GQuu1LnFi2AZjed2n6X6J6XKBxadpepEtOMJvpjzCHAYn+B0jXakTx8fHR9yNUDxRyek8T83zHCNOOB9l6jNZjxTwIQnfrwgwkKT0iSQCEtkBJDkMxZOCyTUFdOuwxYYEM/mov2ma6LuddfCG9+dUZHLFp/d0iBwaWHot8SHE7XYLNVFKibkxUoeRENdt9O/XdX3XEVewJBRjfZIPCQ3cYCA8iQq43+8h+Lxnp6/hdQji4+Pj5YaKHp5k9xrjk0wcRZ1J0CwP+XAYz/AvnkH0TdMUvQUwpIBO0/SSjNQF1sNg6obPvt51G6qBXgTy8AuojAzxS0n/ygaHQvHy/vtlpo9b6eAclu/06mNWIuDzMR+C0DLwTQe/5ImmzJmDcDlr+dcwXA1Thf2iFFVAshItZ6L3Q3H1jGN4j/qGI91hPsqNwQVeZcxCR+hXXsyDvV9Gmnj/Qh78X2sABHwik3OOexGHEFB+/04MrAaEvZgmv0ni9AweKGKuvbzV5BBEw7/h4FcPFC+KnI+ZHPtABri5YHVYUZzJ2WmafjdWhJpo+LUbh0Edg0sMRrrwGeZe/nUon5i47HdJgvIdhiGKHrnAjBinwWTHcejvv//+pl9/k7mqz1wdYj5UwGAYh2fwmn+LiKhQIDkQRRRDaYXfR7T8H5Xtg+xpmr4livckPqPlYO/f7iFq/l0rP6BTqtM58PBbMr8mcE3Fpadf63k7AElg6z8DAAzG9xx9f1PsAAAAAElFTkSuQmCC') !important;
13 | padding: 0 !important;
14 | margin: 0 !important;
15 | }
16 |
17 | a {
18 | color: #2b75c0 !important;
19 | text-decoration: none !important;
20 | -webkit-transition: text-shadow .3s;
21 | -moz-transition: text-shadow .3s;
22 | }
23 |
24 | a:hover {
25 | text-shadow: 0 0 3px #3b86d2;
26 | }
27 |
28 | a:active,
29 | a:focus {
30 | outline: 0 !important;
31 | }
32 |
33 | ::selection {
34 | color: #fafafa;
35 | background-color: deepPink;
36 | text-shadow: none !important;
37 | }
38 |
39 | ::-moz-selection {
40 | color: #fafafa;
41 | background-color: deepPink;
42 | text-shadow: none !important;
43 | }
44 |
45 | /* shitblockan */
46 | .boardBanner,
47 | /* heading/logo (cause if you don't know what board you're on, you must have problems) */
48 | img[src^="http://static.4chan.org/support/"],
49 | /* ads (>2011 >not using adblock) */
50 | hr,
51 | /* horizontal rules on the page */
52 | .postingMode,
53 | /* posting mode: reply */
54 | .navLinks,
55 | /* [return] [bottom/top] */
56 | .pagelist .prev,
57 | .pagelist .next,
58 | /* previous and next page buttons */
59 | .stylechanger,
60 | /* yotsuba style selector */
61 | #absbot/* bottom nav and any copyright crap */
62 | {
63 | display: none !important;
64 | }
65 |
66 | #boardNavDesktop {
67 | position: fixed !important;
68 | left: 0 !important;
69 | opacity: .5;
70 | top: -21px !important;
71 | -webkit-transition: all.2s;
72 | -moz-transition: all .2s;
73 | right: 0 !important;
74 | text-align: center !important;
75 | background-color: #222;
76 | background-image: -webkit-linear-gradient(#444, #222);
77 | background-image: -moz-linear-gradient(#444, #222);
78 | min-height: 20px;
79 | font-size: 0 !important;
80 | color: transparent !important;
81 | box-shadow: 0 0 20px 0 rgba(0, 0, 0, .75);
82 | border-bottom: 1px solid #222;
83 | z-index: 1;
84 | }
85 |
86 | #boardNavDesktop::after {
87 | content: 'Navigation';
88 | font-size: 12px;
89 | color: #fafafa;
90 | position: absolute;
91 | display: inline-block;
92 | top: 21px;
93 | width: 200px;
94 | left: 50%;
95 | margin-left: -100px;
96 | background-color: #222;
97 | padding-bottom: 2px;
98 | border-bottom-left-radius: 3px;
99 | border-bottom-right-radius: 3px;
100 | }
101 |
102 | #boardNavDesktop:hover {
103 | opacity: .95;
104 | top: 0 !important;
105 | }
106 |
107 | #boardNavDesktop a {
108 | color: #ebebeb !important;
109 | padding: 0 !important;
110 | font-size: 12px !important;
111 | line-height: 20px;
112 | margin: 0 3px;
113 | -webkit-transition: text-shadow .5s;
114 | -moz-transition: text-shadow .5s;
115 | }
116 |
117 | #boardNavDesktop a:hover {
118 | text-shadow: 0 0 2px #fff, 0 0 5px #eee;
119 | }
120 |
121 | #navtopr {
122 | float: none !important;
123 | }
124 |
125 | /* announcements */
126 | /* pick a heading and stick with it moot, damn */
127 | .globalMessage {
128 | margin: 30px 0 20px;
129 | }
130 |
131 | .globalMessage * {
132 | font-family: 'Helvetica', 'Arial', sans-serif;
133 | color: #b90000 !important;
134 | text-shadow: 0 1px 1px #ffe9e9;
135 | margin: 0;
136 | }
137 |
138 | .globalMessage blink {
139 | text-decoration: none !important;
140 | }
141 |
142 | .globalMessage a {
143 | color: #2083fe !important;
144 | }
145 |
146 | .globalMessage a:hover {
147 | text-shadow: none;
148 | }
149 |
150 | /* for when moot and mods want to add youtube/sounds */
151 | /* so, with some CSS, you can at least see the button, to pause the music :) */
152 | embed {
153 | position: fixed;
154 | bottom: 0;
155 | left: 0;
156 | width: 30px !important;
157 | height: 25px !important;
158 | }
159 |
160 | /* main body */
161 | #delform {
162 | width: 900px;
163 | margin: /*30px 75px 0 20px*/
164 | 0 auto !important;
165 | }
166 |
167 | /* postarea */
168 | /* to-do from the top of my head */
169 | /* use the spoiler image from master (cause i reckon it's sexy),
170 | add :place-holder text styling,
171 | add button[disabled] (cooldown, 404) styling,
172 | either wait for the #qr rewrite, or make it look a bit more presentable:
173 | captcha image
174 | autohide fanciness
175 | opcaity transitions
176 | captcha counter
177 | autosubmit checkbox/label
178 | multiple files
179 | */
180 | /* hiding shiz */
181 | #postForm input[type="file"] > input[type="button"],
182 | #postForm #postPassword + span,
183 | #postForm .rules,
184 | #postForm span:empty,
185 | #postForm td:empty,
186 | #postForm > tbody > tr > td:first-of-type {
187 | display: none;
188 | }
189 |
190 | #postForm {
191 | position: fixed;
192 | right: -325px;
193 | bottom: 30px;
194 | -webkit-transition: right 2s ease-in-out 3s;
195 | -moz-transition: right 2s ease-in-out 3s;
196 | z-index: 5;
197 | }
198 |
199 | #postForm:hover {
200 | right: 5px;
201 | -webkit-transition: right .5s;
202 | -moz-transition: right .5s;
203 | }
204 |
205 | #postForm:hover textarea {
206 | right: 0;
207 | -webkit-transition: right .5s;
208 | -moz-transition: right .5s;
209 | }
210 |
211 | #postForm input:focus {
212 | right: 330px;
213 | -webkit-transition: right 1s ease-in-out 3.5s;
214 | -moz-transition: right 1s ease-in-out 3.5s;
215 | }
216 |
217 | #postForm:hover input:focus,
218 | #postForm:hover textarea:focus {
219 | right: 0;
220 | -webkit-transition: right .5s;
221 | -moz-transition: right .5s;
222 | }
223 |
224 | #postForm input:not(:focus) {
225 | right: 0;
226 | -webkit-transition: right .5s;
227 | -moz-transition: right .5s;
228 | }
229 |
230 | #postForm textarea {
231 | position: relative;
232 | right: 50px;
233 | -webkit-transition: right 1s ease-in-out 3.5s;
234 | -moz-transition: right 1s ease-in-out 3.5s;
235 | }
236 |
237 | #postForm textarea:focus {
238 | right: 330px;
239 | }
240 |
241 | #postForm input[type="text"],
242 | #postForm input[type="file"] > input[type="text"],
243 | #postForm input[name="recaptcha_response_field"] {
244 | -webkit-appearance: none;
245 | -moz-appearance: none;
246 | font-family: Helvetica, Arial, sans-serif !important;
247 | font-size: 13px !important;
248 | line-height: 18px !important;
249 | color: #222;
250 | background-color: #fafafa;
251 | padding: 2px 2px 3px !important;
252 | border: 1px solid #bbb !important;
253 | border-radius: 3px;
254 | margin: 0 !important;
255 | margin-bottom: 1px !important;
256 | width: 300px !important;
257 | vertical-align: baseline;
258 | position: relative !important;
259 | }
260 |
261 | #postForm input[type="file"] {
262 | -webkit-appearance: none;
263 | margin: 0;
264 | width: 244px !important;
265 | }
266 |
267 | #postForm input[type="text"],
268 | #postForm input[type="file"] > input[type="text"],
269 | #postForm input[name="recaptcha_response_field"] {
270 | height: auto !important;
271 | }
272 |
273 | #postForm textarea {
274 | min-height: 200px;
275 | resize: vertical;
276 | overflow: auto;
277 | }
278 |
279 | #postForm input[name="recaptcha_response_field"] {
280 | color: #222 !important;
281 | background-color: #fff;
282 | border-top-width: 0 !important;
283 | border-top-left-radius: 0;
284 | border-top-right-radius: 0;
285 | }
286 |
287 | /* silly chrumb~ */
288 | /* well, not really. it's just that an id overrides selectors such as above (in chrumb at least) */
289 | #postForm .recaptchatable #recaptcha_image {
290 | border: 0 !important;
291 | }
292 |
293 | #postForm .recaptchatable #recaptcha_response_field {
294 | border: 1px solid #bbb !important;
295 | border-top-width: 0 !important;
296 | }
297 |
298 | #postForm input[name="sub"],
299 | #postForm input[type="file"] > input[type="text"] {
300 | width: 244px !important;
301 | }
302 |
303 | #postForm input[name="pwd"] {
304 | color: #bbb;
305 | width: 55px !important;
306 | position: absolute !important;
307 | bottom: 0;
308 | right: 0;
309 | -webkit-transition: width .2s;
310 | -moz-transition: width .2s;
311 | }
312 |
313 | .webkit #postForm input[name="pwd"] {
314 | bottom: -1px;
315 | }
316 |
317 | #postForm input:focus {
318 | outline: none;
319 | }
320 |
321 | #postForm input[name="pwd"]:focus {
322 | width: 90px !important;
323 | z-index: 2;
324 | -webkit-transition: width .2s;
325 | -moz-transition: width .2s;
326 | }
327 |
328 | #postForm input[type="submit"],
329 | #postForm input[type="submit"][disabled] {
330 | -webkit-appearance: none;
331 | -moz-appearance: none;
332 | font-family: Helvetica, Arial, sans-serif;
333 | font-size: 13px;
334 | line-height: 18px !important;
335 | text-shadow: 0 1px 0 #fafafa;
336 | text-transform: lowercase;
337 | color: #777 !important;
338 | background-image: -webkit-linear-gradient(#fafafa, #cdcdcd);
339 | background-image: -moz-linear-gradient(#fafafa, #cdcdcd);
340 | padding: 0px 4px;
341 | border: 1px solid #bbb !important;
342 | border-radius: 3px;
343 | margin: 0 0 -0 1px !important;
344 | min-width: 55px;
345 | width: 55px;
346 | max-width: 55px;
347 | min-height: 25px;
348 | height: 25px;
349 | max-height: 25px;
350 | vertical-align: top;
351 | position: relative;
352 | cursor: pointer;
353 | }
354 |
355 | #postForm input[type="submit"][disabled]:active {
356 | background-color: #cdcdcd;
357 | }
358 |
359 |
360 | #postForm input[type="file"]::-webkit-file-upload-button {
361 | -webkit-appearance: none;
362 | -moz-appearance: none;
363 | font-family: Helvetica, Arial, sans-serif;
364 | font-size: 13px;
365 | line-height: 18px !important;
366 | text-shadow: 0 1px 0 #fafafa;
367 | text-transform: lowercase;
368 | color: #777 !important;
369 | background-image: -webkit-linear-gradient(#fafafa, #cdcdcd);
370 | background-image: -moz-linear-gradient(#fafafa, #cdcdcd);
371 | padding: 0px 4px;
372 | border: 1px solid #bbb;
373 | border-radius: 3px;
374 | margin: 0 0 -0 1px !important;
375 | min-width: 100px;
376 | width: 100px;
377 | max-width: 100px;
378 | min-height: 25px;
379 | height: 25px;
380 | max-height: 25px;
381 | vertical-align: top;
382 | position: relative;
383 | cursor: pointer;
384 | }
385 |
386 | #postForm input[type="submit"]:disabled {
387 | cursor: default;
388 | text-shadow: none;
389 | background-image: none;
390 | background-color: #cdcdcd;
391 | }
392 |
393 | #postForm {
394 | border-spacing: 0;
395 | border-collapse: collapse;
396 | }
397 |
398 | #postForm #recaptcha_table tr[height="73"] td[style] a:not(:first-of-type),
399 | #postForm #recaptcha_table tr[height="73"] td:last-of-type,
400 | #postForm #recaptcha_table tr:last-of-type td:not(:first-of-type) {
401 | display: none;
402 | }
403 |
404 | #postForm #recaptcha_widget_div {
405 | width: 300px !important;
406 | position: relative;
407 | }
408 |
409 | #postForm #recaptcha_table tr[height] {
410 | height: auto !important;
411 | }
412 |
413 | #postForm #recaptcha_table *:not(input):not(img) {
414 | padding: 0 !important;
415 | }
416 |
417 | #postForm #recaptcha_image {
418 | border: 0 !important;
419 | position: relative !important;
420 | }
421 |
422 | #postForm #recaptcha_image > img {
423 | width: 298px !important;
424 | border: 1px solid #bbb !important;
425 | border-bottom: 0 !important;
426 | border-top-left-radius: 3px;
427 | border-top-right-radius: 3px;
428 | }
429 |
430 | #postForm #recaptcha_reload {
431 | position: absolute !important;
432 | top: 0 !important;
433 | right: 0 !important;
434 | background-image: url('http://i.imgur.com/ljf6O.png');
435 | height: 0 !important;
436 | width: 16px !important;
437 | padding-top: 16px !important;
438 | }
439 |
440 | /* [O Spoiler Image] */
441 | #postForm tr:nth-of-type(3) td:not(.postblock) {
442 | font-size: 0 !important;
443 | color: transparent;
444 | }
445 |
446 | #postForm tr:nth-of-type(3) label {
447 | font-size: 8pt;
448 | position: absolute;
449 | bottom: 2px;
450 | left: 5px;
451 | line-height: 25px;
452 | text-transform: lowercase;
453 | letter-spacing: -5px;
454 | -webkit-transition-property: color, letter-spacing;
455 | -webkit-transition: .5s ease-in-out;
456 | -moz-transition-property: color, letter-spacing;
457 | -moz-transition: .5s ease-in-out;
458 | z-index: 5;
459 | }
460 |
461 | #postForm tr:nth-of-type(3) label:hover {
462 | color: black;
463 | letter-spacing: 0;
464 | }
465 |
466 | #postForm input[type="checkbox"] {
467 | -moz-appearance: none;
468 | border: 1px solid #bbb !important;
469 | border-radius: 3px !important;
470 | margin: 0 3px 0 0;
471 | vertical-align: middle;
472 | }
473 |
474 | /* okay, so chrumb fucks us over with checkboxes */
475 | /* it removes the tick! so, either have a border/box-shadow/background-color change */
476 | /* seaweeedchan has content: 'img'; (would it be cross browser?) */
477 | /* images with the borders */
478 | img:-moz-broken {
479 | background: black;
480 | }
481 |
482 | img[md5] {
483 | border: 4px solid #fafafa !important;
484 | border-radius: 4px;
485 | box-shadow: 0 0 0 1px #bbb, 0 0 0px rgba(0, 0, 0, .25);
486 | margin: 3px 7px 5px 3px !important;
487 | -moz-transition: box-shadow .2s;
488 | }
489 |
490 | img[md5]:hover {
491 | box-shadow: 0 0 0 1px #bbb, 0 0 5px rgba(0, 0, 0, .25);
492 | }
493 |
494 | .reply img,
495 | .replyhl img {
496 | margin-bottom: 0 !important;
497 | }
498 |
499 | .abbr,
500 | span.omittedposts {
501 | color: #222 !important;
502 | }
503 |
504 | .omittedposts {
505 | font-size: 11px;
506 | text-shadow: none !important;
507 | display: block;
508 | clear: both;
509 | float: right;
510 | padding: 2px 5px;
511 | margin-right: 20px;
512 | margin-bottom: -1px;
513 | background-image: -webkit-linear-gradient(#fafafa, #ddd);
514 | background-image: -moz-linear-gradient(#fafafa, #ddd);
515 | border-top-left-radius: 5px;
516 | border-top-right-radius: 5px;
517 | }
518 |
519 | .container {
520 | display: block;
521 | font-size: 8pt;
522 | margin-left: 30px;
523 | line-height: 10pt;
524 | color: #777;
525 | }
526 |
527 | .container + br {
528 | display: none;
529 | }
530 |
531 | .container::before {
532 | content: 'quoted by: ';
533 | }
534 |
535 | .container::after {
536 | content: '.';
537 | }
538 |
539 | .container .backlink:last-of-type:not(:first-of-type)::before {
540 | content: ' and ';
541 | color: #777;
542 | text-shadow: none;
543 | cursor: text;
544 | }
545 |
546 | .container .backlink:not(:last-of-type):not(:nth-last-of-type(2))::after {
547 | content: ',';
548 | color: #777;
549 | text-shadow: none;
550 | cursor: text;
551 | }
552 |
553 | span[id^="no"] > a:nth-of-type(1) {
554 | font-size: 0;
555 | color: transparent !important;
556 | }
557 |
558 | span[id^="no"] > a:nth-of-type(1):before {
559 | content: "#";
560 | font-size: 10pt;
561 | color: #2b75c0 !important;
562 | }
563 |
564 | span[id^="nothread"] {
565 | font-size: 0;
566 | color: transparent;
567 | }
568 |
569 | span[id^="nothread"] a {
570 | font-size: 10pt;
571 | color: #2b75c0;
572 | }
573 |
574 | span[id^="nothread"] a:nth-of-type(3) {
575 | display: inline-block;
576 | background-image: -webkit-linear-gradient(#fafafa, #ccc);
577 | background-image: -moz-linear-gradient(#fafafa, #ccc);
578 | border: 1px solid #bbb;
579 | border-radius: 3px;
580 | text-transform: lowercase;
581 | color: #555 !important;
582 | text-shadow: 0 1px 0 #fff;
583 | padding: 3px 5px;
584 | margin: 0 5px;
585 | }
586 |
587 | span[id^="nothread"] a:nth-of-type(3):hover {
588 | box-shadow: 0 0 2px #bbb;
589 | }
590 |
591 | span[id^="nothread"] a:nth-of-type(3):active {
592 | background-image: -webkit-linear-gradient(#ccc, #eee);
593 | background-image: -moz-linear-gradient(#ccc, #eee);
594 | }
595 |
596 | /* put all replies underneath op */
597 | table {
598 | clear: both;
599 | position: relative;
600 | }
601 |
602 | /* replies */
603 | .post {
604 | font: 10pt 'Helvetica', 'Arial', sans-serif !important;
605 | line-height: 12pt !important;
606 | color: #777 !important;
607 | background-image: -webkit-linear-gradient(#eee, #ddd) !important;
608 | background-image: -moz-linear-gradient(#eee, #ddd) !important;
609 | box-shadow: 0 0 1px #999;
610 | padding: 5px !important;
611 | border: 0 !important;
612 | border-radius: 5px !important;
613 | position: relative;
614 | width: 100%;
615 | }
616 |
617 | td.replyhl {
618 | font: 10pt 'Helvetica', 'Arial', sans-serif !important;
619 | line-height: 12pt !important;
620 | color: #777 !important;
621 | background-image: -webkit-linear-gradient(#eee, #ddd) !important;
622 | background-image: -moz-linear-gradient(#eee, #ddd) !important;
623 | box-shadow: 0 0 5px #999;
624 | padding: 5px !important;
625 | border: 0 !important;
626 | border-radius: 5px !important;
627 | position: relative;
628 | width: 100%;
629 | }
630 |
631 | /* post time */
632 | time,
633 | .posttime {
634 | color: #777;
635 | }
636 |
637 | /* filesize and filenames */
638 | .filesize {
639 | font: 10pt 'Helvetica', 'Arial', sans-serif;
640 | color: #777;
641 | line-height: 12pt;
642 | }
643 |
644 | .filesize a:first-of-type::after {
645 | content: " ";
646 | }
647 |
648 | .reply .filesize a:first-of-type::before,
649 | .replyhl .filesize a:first-of-type::before {
650 | content: " : ";
651 | color: #777;
652 | }
653 |
654 | .filesize span {
655 | font-size: 0;
656 | color: transparent !important;
657 | }
658 |
659 | .filesize span:after {
660 | content: attr(title);
661 | font-size: 10pt;
662 | color: #777 !important;
663 | }
664 |
665 | .forwardlink {
666 | color: #102073 !important;
667 | }
668 |
669 | .unkfunc {
670 | color: #669933 !important;
671 | }
672 |
673 | /* (user was warned/banned for this post) */
674 | blockquote > b[style="color:red;"] {
675 | background-color: rgba(255, 0, 0, 0.15);
676 | border-radius: 3px;
677 | padding: 2px 5px 3px;
678 | }
679 |
680 | /* moot and mods */
681 | .postername > span,
682 | .postertrip > span,
683 | .commentpostername > span {
684 | font-size: 12pt;
685 | text-shadow: 0px 0px 5px pink;
686 | }
687 |
688 | blockquote > div {
689 | background-color: rgba(255, 0, 0, .15);
690 | padding: 3px !important;
691 | border: 0 !important;
692 | margin: 0 !important;
693 | }
694 |
695 | /* subject / name */
696 | .filetitle,
697 | .replytitle,
698 | .postername,
699 | .commentpostername {
700 | font-weight: 600 !important;
701 | background: none !important;
702 | display: inline-block;
703 | unicode-bidi: normal;
704 | }
705 |
706 | .filetitle,
707 | .replytitle {
708 | color: #575757 !important;
709 | }
710 |
711 | .filetitle:not(:empty),
712 | .replytitle:not(:empty) {
713 | margin-left: 2px;
714 | }
715 |
716 | /*
717 | .linkmail {
718 | color: #102073 !important;
719 | text-shadow: 0 0 3px #3b86d2;
720 | }
721 |
722 | .linkmail > .postertrip {
723 | color: blue;
724 | }
725 |
726 | .postername + .linkmail::before,
727 | .commentpostername + .linkmail::before {
728 | font-weight: 100;
729 | content: ' ['attr(href)']';
730 | }
731 |
732 | .postername > .linkmail::after,
733 | .commentpostername > .linkmail::after {
734 | font-weight: 100;
735 | content: ' ['attr(href)']';
736 | }
737 | */
738 | .linkmail {
739 | color: #222 !important;
740 | }
741 |
742 | span + .linkmail:before {
743 | content: '';
744 | }
745 |
746 | .linkmail:before {
747 | content: ' ['attr(href)'] ';
748 | font-weight: 100;
749 | }
750 |
751 | .postername,
752 | .commentpostername {
753 | color: #222 !important;
754 | }
755 |
756 | /* trip */
757 | .postertrip {
758 | font-family: "Courier New", monospace;
759 | color: #222 !important;
760 | text-shadow: 0 0 1px #102073;
761 | background: none !important;
762 | }
763 |
764 | blockquote {
765 | font: 10pt 'Helvetica', 'Arial', sans-serif !important;
766 | color: #222;
767 | line-height: 12pt !important;
768 | margin: 0 0 0 20px !important;
769 | }
770 |
771 | input[type="checkbox"] {
772 | -moz-appearance: none;
773 | margin: 0;
774 | border: 1px solid #AAA !important;
775 | background: rgba(255, 255, 255, .5) !important;
776 | border-radius: 3px !important;
777 | }
778 |
779 | /* bye bye unicode fags :) */
780 | .filetitle,
781 | .replytitle,
782 | .postername,
783 | .commentpostername,
784 | .postertrip {
785 | unicode-bidi: normal;
786 | display: inline-block;
787 | }
788 |
789 | /* spoilers */
790 | .spoiler {
791 | color: transparent !important;
792 | background: #222 !important;
793 | border-radius: 3px;
794 | box-shadow: 0 0 3px rgba(0, 0, 0, .25);
795 | -webkit-transition: all .2s;
796 | -moz-transition: all .2s;
797 | }
798 |
799 | .spoiler:hover {
800 | color: #222 !important;
801 | background: none !important;
802 | box-shadow: none;
803 | }
804 |
805 | .quotelink {
806 | text-shadow: none;
807 | }
808 |
809 | .spoiler .unkfunc {
810 | color: transparent !important;
811 | text-shadow: none;
812 | }
813 |
814 | .spoiler:hover .unkfunc {
815 | color: #669933 !important;
816 | }
817 |
818 | /* pages */
819 | .pages {
820 | float: none !important;
821 | border-spacing: 0;
822 | border-collapse: collapse;
823 | display: block;
824 | position: relative;
825 | clear: both;
826 | width: 100%;
827 | background: none !important;
828 | border: 0 !important;
829 | text-align: center;
830 | margin: 20px 0;
831 | }
832 |
833 | .pages,
834 | .pages tbody,
835 | .pages tr,
836 | .pages td {
837 | display: block;
838 | }
839 |
840 | .pages td {
841 | padding: 0 !important;
842 | font-size: 0 !important;
843 | color: transparent;
844 | word-spacing: 7px;
845 | }
846 |
847 | .pages td:not(:nth-of-type(2)) {
848 | display: none;
849 | }
850 |
851 | .pages a,
852 | .pages b {
853 | font-size: 14px !important;
854 | color: #2d2d2d !important;
855 | padding: 3px 2px !important;
856 | min-width: 16px;
857 | display: inline-block;
858 | background-image: -webkit-linear-gradient(#fff, #ddd);
859 | background-image: -moz-linear-gradient(#fff, #ddd);
860 | box-shadow: 0 1px 2px rgba(0, 0, 0, .5);
861 | border-radius: 3px !important;
862 | -webkit-transition: box-shadow .2s;
863 | -moz-transition: box-shadow .2s;
864 | text-shadow: none;
865 | }
866 |
867 | .pages a:hover {
868 | box-shadow: 0 1px 4px rgba(0, 0, 0, .75);
869 | }
870 |
871 | .pages b {
872 | font-weight: 600;
873 | color: #ededed !important;
874 | background-image: -webkit-linear-gradient(#4c4c4c, #2d2d2d);
875 | background-image: -moz-linear-gradient(#4c4c4c, #2d2d2d);
876 | cursor: default;
877 | }
878 |
879 | /* deleting posts and reporting */
880 | table[align=right] td {
881 | font: 8pt 'Helvetica', 'Arial', sans-serif !important;
882 | color: #777;
883 | background-color: #fafafa;
884 | position: fixed;
885 | right: -277px;
886 | bottom: 425px;
887 | opacity: .5;
888 | padding: 1px 0 0 5px !important;
889 | height: 25px;
890 | line-height: 25px !important;
891 | border-top-left-radius: 5px;
892 | border-bottom-left-radius: 5px;
893 | -webkit-transition: all .2s;
894 | -moz-transition: all .2s;
895 | }
896 |
897 | table[align=right] td:hover {
898 | opacity: .9;
899 | right: 0;
900 | }
901 |
902 | table[align=right] input[name=pwd] {
903 | -webkit-appearance: none;
904 | -moz-appearance: none;
905 | padding: 3px 2px !important;
906 | border: 1px solid #bbb !important;
907 | color: #bbb;
908 | border-radius: 3px;
909 | margin: 0 !important;
910 | line-height: 16px !important;
911 | width: 75px !important;
912 | }
913 |
914 | table[align=right] input[value=Delete],
915 | table[align=right] input[value=Report] {
916 | -webkit-appearance: none;
917 | -moz-appearance: none;
918 | cursor: pointer;
919 | font: 8pt 'Helvetica', 'Arial', sans-serif;
920 | background-image: -webkit-linear-gradient(#fafafa, #ccc);
921 | background-image: -moz-linear-gradient(#fafafa, #ccc);
922 | border: 1px solid #bbb;
923 | border-radius: 3px;
924 | text-transform: lowercase;
925 | color: #555;
926 | text-shadow: 0 1px 0 #fff;
927 | padding: 2px 0 1px 0 !important;
928 | min-height: 24px !important;
929 | margin-right: 3px;
930 | }
931 |
932 | .stub {
933 | margin: 8px 0;
934 | clear: both;
935 | padding: 5px;
936 | background-image: -webkit-linear-gradient(#eee, #ddd);
937 | background-image: -moz-linear-gradient(#eee, #ddd);
938 | box-shadow: 0 0 1px #999;
939 | border-radius: 5px;
940 | }
941 |
942 | .stub a {
943 | display: block;
944 | }
945 |
946 | .op > a[href="javascript:;"]:first-of-type {
947 | padding: 2px;
948 | margin-right: 5px;
949 | background-image: -webkit-linear-gradient(#eee, #ddd);
950 | background-image: -moz-linear-gradient(#eee, #ddd);
951 | box-shadow: 0 0 1px #999;
952 | border-radius: 5px;
953 | }
954 |
955 | .stub:hover {
956 | box-shadow: 0 0 2px #999;
957 | }
958 |
959 | .stub:hover a {
960 | text-shadow: none
961 | }
962 |
963 | /* thread watcher */
964 | #watcher {
965 | position: fixed !important;
966 | opacity: .5;
967 | padding: 5px;
968 | border: 0 !important;
969 | border-radius: 4px;
970 | background-color: #e7e7e7 !important;
971 | box-shadow: 0 0 10px rgba(0, 0, 0, .25);
972 | -webkit-transition: opacity .1s;
973 | -moz-transition: opacity .1s;
974 | }
975 |
976 | #watcher:hover {
977 | opacity: .8;
978 | }
979 |
980 | #watcher > div {
981 | padding: 0 !important;
982 | }
983 |
984 | #watcher > .move {
985 | color: #777;
986 | text-align: center;
987 | text-transform: lowercase;
988 | text-decoration: none !important;
989 | }
990 |
991 | /* stats */
992 | #stats {
993 | color: #222;
994 | opacity: .5;
995 | padding: 5px;
996 | border-radius: 4px;
997 | background-color: #e7e7e7 !important;
998 | box-shadow: 0 0 10px rgba(0, 0, 0, .25);
999 | }
1000 |
1001 | #stats:hover #postcount::after {
1002 | content: " post(s)";
1003 | }
1004 |
1005 | #stats:hover #imagecount::after {
1006 | content: " image(s)";
1007 | }
1008 |
1009 | #qp {
1010 | border: 0 !important;
1011 | background: rgba(235, 235, 235, .85) !important;
1012 | padding: 5px !important;
1013 | border-radius: 3px;
1014 | }
1015 |
1016 | .qphl {
1017 | outline: 0 !important;
1018 | box-shadow: 0 0 5px #999 !important;
1019 | }
1020 |
1021 | #updater {
1022 | color: #777 !important;
1023 | background-image: -webkit-linear-gradient(#eee, #ddd) !important;
1024 | background-image: -moz-linear-gradient(#eee, #ddd) !important;
1025 | top: auto !important;
1026 | right: 30px !important;
1027 | bottom: 0 !important;
1028 | left: auto !important;
1029 | border: 0 !important;
1030 | padding: 3px;
1031 | border-top-left-radius: 3px;
1032 | border-top-right-radius: 3px;
1033 | box-shadow: 0 0 1px #999;
1034 | z-index: 3;
1035 | }
1036 |
1037 | #updater .move {
1038 | cursor: default !important;
1039 | text-align: center;
1040 | }
1041 |
1042 | #updater #count:not(.new):not(.error) {
1043 | display: none;
1044 | }
1045 |
1046 | #updater .new {
1047 | color: #20cc50;
1048 | background: none !important;
1049 | }
1050 |
1051 | #updater .error {
1052 | color: #b90000 !important;
1053 | }
1054 |
1055 | #updater input {
1056 | margin-left: 3px;
1057 | }
1058 |
1059 | #updater input[name="Interval"] {
1060 | -webkit-appearance: none;
1061 | -moz-appearance: none;
1062 | text-align: center;
1063 | padding: 3px 2px;
1064 | border: 1px solid #bbb;
1065 | border-radius: 3px;
1066 | }
1067 |
1068 | #updater div:last-of-type {
1069 | text-align: center;
1070 | }
1071 |
1072 | #updater input[value="Update Now"] {
1073 | -webkit-appearance: none;
1074 | -moz-appearance: none;
1075 | cursor: pointer;
1076 | font-family: 'Helvetica', 'Arial', sans-serif;
1077 | color: #555;
1078 | text-shadow: 0 1px 0 #fff;
1079 | background-image: -webkit-linear-gradient(#fafafa, #ccc);
1080 | background-image: -moz-linear-gradient(#fafafa, #ccc);
1081 | padding: 1px 3px;
1082 | border: 1px solid #bbb;
1083 | border-radius: 3px;
1084 | margin: 1px;
1085 | }
1086 |
1087 | #updater input[value="Update Now"]:hover {
1088 | box-shadow: 0 0 2px #bbb;
1089 | }
1090 |
1091 | #imgControls input[type="checkbox"] {
1092 | -moz-appearance: none;
1093 | border: 1px solid #bbb !important;
1094 | border-radius: 3px !important;
1095 | margin: 0 4px 0 0;
1096 | vertical-align: baseline;
1097 | }
1098 |
1099 | #imgControls {
1100 | background-image: -webkit-linear-gradient(#eee, #ddd);
1101 | background-image: -moz-linear-gradient(#eee, #ddd);
1102 | padding: 3px 2px 2px;
1103 | border-top-left-radius: 3px;
1104 | border-top-right-radius: 3px;
1105 | box-shadow: 0 0 1px #999;
1106 | position: fixed;
1107 | bottom: 0;
1108 | right: 75px;
1109 | z-index: 2;
1110 | }
1111 |
1112 | #imgControls:hover > #imageType {
1113 | visibility: visible;
1114 | width: auto;
1115 | }
1116 |
1117 | #imgControls > #imageType {
1118 | -moz-appearance: none;
1119 | visibility: collapse;
1120 | width: 1px;
1121 | color: #777;
1122 | background: none;
1123 | border: 0;
1124 | }
1125 |
1126 | #imageType > *:not(option) {
1127 | visibility: collapse;
1128 | }
1129 |
1130 | #imgControls > label {
1131 | font-size: 0;
1132 | }
1133 |
1134 | .op {
1135 | position: relative;
1136 | }
1137 |
1138 | .reportbutton {
1139 | color: #2d2d2d !important;
1140 | text-shadow: none !important;
1141 | background-image: -webkit-linear-gradient(#eee, #ddd);
1142 | background-image: -moz-linear-gradient(#eee, #ddd);
1143 | padding: 2px 3px 3px;
1144 | border-radius: 3px;
1145 | box-shadow: 0 0 1px #999;
1146 | position: absolute;
1147 | top: 0;
1148 | right: 0;
1149 | -webkit-transition: box-shadow .2s;
1150 | -moz-transition: box-shadow .2s;
1151 | }
1152 |
1153 | .reportbutton:hover {
1154 | box-shadow: 0 0 3px #999;
1155 | }
1156 | }
1157 |
--------------------------------------------------------------------------------
/previous/ss16.user.min.css:
--------------------------------------------------------------------------------
1 | /* ==UserStyle==
2 | @name ss18
3 | @version 2.0.6
4 | @namespace https://github.com/saxamaphone69/
5 | @description a self-centered, fresh attempt at (user)styling 4chan
6 | @author sax
7 | @homepageURL https://github.com/saxamaphone69/ss16
8 | @supportURL https://github.com/saxamaphone69/ss16/issues
9 | @license CC-BY-SA-4.0
10 | ==/UserStyle== */
11 | @-moz-document domain('boards.4chan.org'){:root{--primary-50:rgba(243,229,245,.5);--primary-300:#ba68c8;--primary-500:#9c27b0;--primary-700:#7b1fa2;--primary-dark:#454545;--secondary-300:#ffb74d;--secondary-500:#ff9800;--secondary-700:#f57c00;--background-primary:#fff;--background-secondary:#fafafa;--background-hint:#e8e8e8;--background-outline:rgba(205,205,205,.75);--red-50:#ffebee;--red-300:#e57373;--red-500:#f44336;--red-700:#d32f2f;--blue-50:#e3f2fd;--blue-300:#64b5f6;--blue-500:#2196f3;--blue-700:#1976d2;--green-50:#e8f5e9;--green-300:#81c784;--green-500:#4caf50;--green-700:#388e3c;--purple-50:#f3e5f5;--purple-300:#ba68c8;--purple-500:#9c27b0;--purple-700:#7b1fa2;--orange-50:#fff3e0;--orange-300:#ffb74d;--orange-500:#ff9800;--orange-700:#f57c00;--gray-50:#fafafa;--gray-100:#f5f5f5;--gray-300:#e0e0e0;--gray-500:#9e9e9e;--gray-700:#616161;--gray-900:#212121;--text-primary-on-primary:#fff;--text-secondary-on-primary:rgba(255,255,255,.7);--text-hint-on-primary:rgba(255,255,255,.5);--text-disabled-on-primary:rgba(255,255,255,.5);--text-icon-on-primary:rgba(255,255,255,.5);--text-primary-on-primary-light:#fff;--text-secondary-on-primary-light:rgba(255,255,255,.7);--text-hint-on-primary-light:rgba(255,255,255,.5);--text-disabled-on-primary-light:rgba(255,255,255,.5);--text-icon-on-primary-light:rgba(255,255,255,.5);--text-primary-on-primary-dark:#fff;--text-secondary-on-primary-dark:rgba(255,255,255,.7);--text-hint-on-primary-dark:rgba(255,255,255,.5);--text-disabled-on-primary-dark:rgba(255,255,255,.5);--text-icon-on-primary-dark:rgba(255,255,255,.5);--text-primary-on-secondary:rgba(0,0,0,.87);--text-secondary-on-secondary:rgba(0,0,0,.54);--text-hint-on-secondary:rgba(0,0,0,.38);--text-disabled-on-secondary:rgba(0,0,0,.38);--text-icon-on-secondary:rgba(0,0,0,.38);--text-primary-on-secondary-light:rgba(0,0,0,.87);--text-secondary-on-secondary-light:rgba(0,0,0,.54);--text-hint-on-secondary-light:rgba(0,0,0,.38);--text-disabled-on-secondary-light:rgba(0,0,0,.38);--text-icon-on-secondary-light:rgba(0,0,0,.38);--text-primary-on-secondary-dark:#fff;--text-secondary-on-secondary-dark:rgba(255,255,255,.7);--text-hint-on-secondary-dark:rgba(255,255,255,.5);--text-disabled-on-secondary-dark:rgba(255,255,255,.5);--text-icon-on-secondary-dark:rgba(255,255,255,.5);--text-primary-on-background:rgba(0,0,0,.87);--text-secondary-on-background:rgba(0,0,0,.54);--text-hint-on-background:rgba(0,0,0,.38);--text-disabled-on-background:rgba(0,0,0,.38);--text-icon-on-background:rgba(0,0,0,.38);--text-primary-on-light:rgba(0,0,0,.87);--text-secondary-on-light:rgba(0,0,0,.54);--text-hint-on-light:rgba(0,0,0,.38);--text-disabled-on-light:rgba(0,0,0,.38);--text-icon-on-light:rgba(0,0,0,.38);--text-primary-on-dark:#fff;--text-secondary-on-dark:rgba(255,255,255,.7);--text-hint-on-dark:rgba(255,255,255,.5);--text-disabled-on-dark:rgba(255,255,255,.5);--text-icon-on-dark:rgba(255,255,255,.5);--font-family-default:arimo,roboto,helvetica,arial,sans-serif;--font-family-compliment:karla,sans-serif;--font-family-monospace:inconsolata,roboto mono,monospace,monospace;--font-family-icon:material icons,font awesome;--depth-material:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12);--depth-default:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12),0 1px 5px 0 rgba(0,0,0,.2)}:root.ss16--invert{--primary-50:rgba(60,1,68,.25);--background-primary:#2b3942;--background-secondary:#2c343a;--background-hint:#1e2a31;--background-outline:rgba(33,40,44,.5);--text-primary-on-background:#8a9ba1;--text-secondary-on-background:rgba(138,155,161,.7);--text-hint-on-background:rgba(138,155,161,.5)}:root.nws{--primary-50:rgba(239,235,233,.5);--primary-300:#a1887f;--primary-500:#795548;--primary-700:#5d4037;--secondary-300:#81c784;--secondary-500:#4caf50;--secondary-700:#388e3c}:root.site-loading #delform::before{content:'';display:block;border:.5rem solid var(--text-hint-on-background);border-top-color:var(--primary-500);width:10rem;height:10rem;margin:auto;border-radius:50%;animation:loading 1s infinite}:root.site-loading #delform{display:flex;align-items:center;justify-content:center;height:calc(100vh - 30rem)}:root.site-loading,:root.site-loading body{padding:0!important}:root.site-loading #bannerCnt,:root.site-loading #header-bar,:root.site-loading .board,:root.site-loading .navLinks,:root.site-loading .pagelist{display:none!important}@keyframes loading{to{transform:rotate(359deg)}}.arc-ads,.center,[hidden]{display:none!important}#navbotright,.ad-plea,.desktop:not(#bannerCnt):not(.postInfo):not(.postNum):not(.summary):not(.pagelist):not(#boardNavDesktopFoot),.mobile,.postForm,.postInfo>input,.qr-link-container,.sideArrows,hr:not(#unread-line){display:none}:root{font-family:var(--font-family-default);font-size:1rem;line-height:1.5;color:var(--text-primary-on-background);background-color:var(--background-hint);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;overflow-y:scroll;box-sizing:border-box}*,::after,::before{box-sizing:inherit}:focus{outline:0}::-moz-selection{background-color:var(--primary-50)}::selection{background-color:var(--primary-50)}::-webkit-scrollbar{width:.5rem;height:.5rem;background-color:var(--gray-300)}::-webkit-scrollbar-thumb{background-color:var(--gray-500)}blockquote,body,h1,h2,h3,h4,h5,h6,p{margin:0}h1,h2,h3,h4,h5,h6{line-height:1.2;font-weight:700;margin-bottom:.5rem}h1{font-size:2.5rem}h2{font-size:2rem}h3{font-size:1.75rem}h4{font-size:1.5rem}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-bottom:1rem}.name,.subject,b,legend,strong,th{font-weight:700}[style*='weight:']{font-weight:700!important}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:inherit;background-color:transparent;text-decoration:none;transition:color .25s}.linkify{text-decoration:solid underline;text-decoration-skip:ink}.postertrip,pre{font-size:1em}.postertrip,.posteruid,code,kbd,pre{font-family:var(--font-family-monospace)}code,kbd{font-size:87.5%;padding:.25rem .5rem .125rem;border-radius:2px}code{word-break:break-word;color:var(--text-primary-on-light);background-color:var(--gray-100)}kbd{color:var(--text-primary-on-dark);background-color:var(--gray-900)}embed,iframe,img,svg,video{vertical-align:middle;height:auto;max-width:100%}audio{vertical-align:middle}svg{fill:currentColor}iframe{border:0}table{border-collapse:collapse;border-spacing:0}progress{vertical-align:baseline}button,input,select,textarea{font:inherit;color:inherit;margin:0}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical;overflow:auto}fieldset{min-width:0;padding:0;border:0;margin:0}legend{box-sizing:border-box;color:inherit;display:block;max-width:100%;padding:0;white-space:normal}.hand,label{cursor:pointer}[type=search]{-webkit-appearance:textfield}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}.postNum .replylink::after{content:'View'}.postNum .replylink::after,button,input[type=button],input[type=submit]{font-size:1rem;color:var(--text-primary-on-primary);background-color:var(--primary-500);text-align:center;display:inline-block;vertical-align:middle;padding:.375rem .75rem;border:0;border-radius:2px;transition:background-color .25s}.postNum .replylink:hover::after,button:hover,input[type=button]:hover,input[type=submit]:hover{background-color:var(--primary-700);cursor:pointer}button:disabled{opacity:.75;background-color:var(--primary-500);cursor:not-allowed}.field{background-color:transparent;padding:.375rem .75rem;border:1px solid var(--background-outline);border-radius:2px;transition:all .25s}.field:focus{border-color:var(--primary-300)}.field:disabled{color:var(--text-disabled-on-light);background-color:var(--background-hint);cursor:not-allowed}::placeholder{color:var(--text-hint-on-background);opacity:1}select{background-color:transparent;padding:.375rem .75rem;border:1px solid var(--background-outline);border-radius:2px}.postMessage>s{text-decoration:none;color:var(--gray-900)!important;background-color:var(--gray-900);transition:color .25s}.postMessage s:hover{color:var(--gray-50)!important}.postMessage s a{color:var(--gray-900);border-bottom:0}.postMessage s a:hover{color:var(--gray-50)}#unread-line{box-sizing:content-box;height:1px;background-color:var(--green-500);overflow:visible;border:0;margin:0 0 1rem}.prettyprinted{font-size:87.5%;-webkit-font-smoothing:subpixel-antialiased;white-space:pre-wrap;word-spacing:normal;word-break:normal;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;hyphens:none;overflow:auto;padding:.5rem;margin:0;display:inline-block;vertical-align:middle;max-width:100%;background-color:#2f3640;border-radius:2px}.prettyprinted .kwd,.prettyprinted .typ{color:#4fc1e9}.prettyprinted .com{color:#656d78}.prettyprinted .tag{color:#ed5565}.prettyprinted .atn{color:#a0d468}.prettyprinted .atv,.prettyprinted .str{color:#ffce54}.prettyprinted .dec,.prettyprinted .lit{color:#ac92ec}.prettyprint,.prettyprinted .clo,.prettyprinted .fun,.prettyprinted .opn,.prettyprinted .pln,.prettyprinted .pun,.prettyprinted .var{color:#e6e9ed}.prettyprint{font-size:87.5%;-webkit-font-smoothing:subpixel-antialiased;white-space:pre-wrap;word-spacing:normal;word-break:normal;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;hyphens:none;overflow:auto;padding:.5rem;margin:0;display:inline-block;vertical-align:middle;max-height:70vh;max-width:100%;background-color:#2f3640;border-radius:2px}.menu-button{display:inline-block;position:relative;cursor:pointer}#add-post::after,#index-rev::after,#index-search-clear::after,#navlinks a::after,.checkbox-letter::after,.close::after,.copy-text-link::after,.download-link::after,.entry input[type=checkbox]::after,.fa::after,.file--gif:not(.expanded-image)>.post>.file>.fileThumb::after,.file--video:not(.expanded-image)>.post>.file>.fileThumb::after,.gal-close::after,.gal-next::after,.gal-prev::after,.gal-start::after,.gal-stop::after,.has-submenu::after,.jump::after,.menu-button::after,.n-pu::after,.pagelist .next a::after,.pagelist .prev a::after,.qr-preview-spoiler::after,.report-link::after,.show-announcement.entry::after,.watch-thread-link::after{font-family:var(--font-family-icon);font-weight:400;font-style:normal;font-size:24px;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:'liga';color:inherit;visibility:visible}.fa-spin::after{animation:spin 2s infinite linear}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(359deg)}}.menu-button::after{content:'more_vert'}.fa-eye::after{content:'remove_red_eye'}.fa-expand::after{content:'fullscreen'}.fa-compress::after{content:'fullscreen_exit'}.fa-picture-o::after{content:'photo'}.fa-comment-o::after{content:'comment'}.fa-refresh::after{content:'refresh'}.fa-wrench::after{content:'settings'}.fa-minus-square-o::after,.fa-minus-square::after{content:'remove_circle'}.fa-plus-square-o::after,.fa-plus-square::after{content:'add_circle'}.close::after,.fa-times::after,.gal-close::after{content:'close'}.watch-thread-link::after{content:'favorite_border'}.watch-thread-link.watched::after{content:'favorite'}#navlinks a:first-of-type::after{content:'keyboard_arrow_up'}#navlinks a:last-of-type::after{content:'keyboard_arrow_down'}#index-rev::after{content:'swap_vert'}.pagelist .prev a::after{content:'arrow_back'}.pagelist .next a::after{content:'arrow_forward'}.fa-edit::after{content:'format_paint'}.copy-text-link::after,.fa-link::after{content:'link'}#paste-area::after{content:'content_paste'}.fa-clock-o::after{content:'timer'}#index-search-clear::after,.fa-times-circle::after{content:'cancel'}.checkbox-letter::after,.qr-preview-spoiler::after{content:'strikethrough_s'}#add-post::after,#qr .fa-plus-square::after{content:'add_box'}.gal-start::after{content:'play_arrow'}.gal-stop::after{content:'stop'}.gal-prev::after,.left .has-submenu::after{content:'keyboard_arrow_left'}.gal-next::after,.has-submenu::after{content:'keyboard_arrow_right'}.jump::after{content:'subdirectory_arrow_right'}.show-announcement.entry::after{content:'chat_bubble'}.report-link::after{content:'warning'}.file--video:not(.expanded-image)>.post>.file>.fileThumb::after{content:'play_circle_outline'}.file--gif:not(.expanded-image)>.post>.file>.fileThumb::after{content:'gif'}.download-link::after,.fa-download::after{content:'file_download'}.n-pu::after{content:'person'}.entry input[type=checkbox]::after{content:'check_box_outline_blank';font-size:1.125rem;color:var(--text-icon-on-background);visibility:visible;display:block}.entry input[type=checkbox]:checked::after{content:'check_box';color:var(--green-500)}.archivedIcon,.closedIcon,.stickyIcon{background-image:url("data:image/svg+xml, %3Csvg height='24' width='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h24v24H0z' fill='none'/%3E%3Cpath d='M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2z'/%3E%3C/svg%3E");height:0;width:1.5rem;padding-top:1.5rem;background-repeat:no-repeat}.archivedIcon,.stickyIcon{background-image:url("data:image/svg+xml, %3Csvg height='24' width='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20.54 5.23l-1.39-1.68C18.88 3.21 18.47 3 18 3H6c-.47 0-.88.21-1.16.55L3.46 5.23C3.17 5.57 3 6.02 3 6.5V19c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V6.5c0-.48-.17-.93-.46-1.27zM12 17.5L6.5 12H10v-2h4v2h3.5L12 17.5zM5.12 5l.81-1h12l.94 1H5.12z'/%3E%3Cpath d='M0 0h24v24H0z' fill='none'/%3E%3C/svg%3E")}.stickyIcon{background-image:url("data:image/svg+xml, %3Csvg height='24' width='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5a2.5 2.5 0 0 1 0-5 2.5 2.5 0 0 1 0 5z'/%3E%3Cpath d='M0 0h24v24H0z' fill='none'/%3E%3C/svg%3E")}.identityIcon{vertical-align:baseline}:root.shortcut-icons #shortcuts .fa{font-size:0;visibility:hidden}:root:not(.shortcut-icons) #shortcuts .fa::after{display:none}#watcher-link.replies-quoting-you::after{color:var(--secondary-500)}.boardBanner{color:var(--text-primary-on-primary);text-align:center;height:40vh;display:flex;flex-direction:column;justify-content:center;align-items:center;background-image:linear-gradient(pink,#6495ed);overflow:hidden;pointer-events:none;user-select:none;contain:strict}.boardTitle{font-family:var(--font-family-compliment);font-size:calc(100% + 5vw);line-height:1;text-transform:lowercase;text-shadow:1rem 1rem 0 var(--primary-500);will-change:text-shadow;transition:text-shadow .1s;z-index:1}.boardSubtitle,.boardTitle{white-space:pre-line}.boardSubtitle[title],.boardTitle[title]{cursor:help}.boardSubtitle[contenteditable=true],.boardTitle[contenteditable=true]{cursor:text;border-bottom:1px dashed}.postMessage>.quote{color:var(--green-500)}.warning{color:var(--red-500)}[color=red],[style*='color: red'],[style*='color:red']{color:var(--red-500)!important}.move{cursor:grab;overflow:hidden}.move:active{cursor:grabbing}.posteruid{font-size:0}.painted{font-size:1rem;display:inline-flex;align-items:center;justify-content:center;padding:.25rem .5rem .125rem;border-radius:2px;position:relative}.painted:hover::after{content:'';display:block;position:absolute;top:0;left:0;width:100%;height:100%;border-radius:2px;background-color:rgba(0,0,0,.1)}:root.fixed.top-header{padding-top:3rem}:root.fixed.bottom-header{padding-bottom:3rem}:root.fixed.top-header #header-bar{top:0}:root.fixed.bottom-header #header-bar{bottom:0}:root.fixed #header-bar{position:fixed}:root.centered-links #board-list,:root.centered-links #full-board-list .boardList,:root.centered-links #header-bar .boardList{justify-content:center}#header-bar{color:var(--text-primary-on-primary);background-color:var(--primary-500);position:relative;z-index:10;padding:0 1.5rem;left:0;right:0;display:flex;justify-content:space-between;align-items:center;will-change:background-color,transform;transition:background-color .25s,transform .25s}:root.fixed.top-header #header-bar.autohide:not(:hover){margin-bottom:-1rem;transform:translateY(-100%)}:root.fixed.bottom-header #header-bar.autohide:not(:hover){transform:translateY(100%)}#board-list,#custom-board-list,#full-board-list,#full-boord-list .boardList{display:flex;align-items:center}#board-list{font-family:var(--font-family-compliment);flex:1;user-select:none}#board-list .boardList{flex-wrap:wrap}#board-list a{text-transform:lowercase;display:inline-flex;justify-content:center;align-items:center;position:relative;padding:0 .75rem;height:3rem;min-width:3.5rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;will-change:opacity;transition:opacity .25s;flex-grow:0;flex-shrink:0}#board-list a:not(.current){opacity:.7}#board-list a:not(.current):hover{opacity:.85}#board-list .current{opacity:1}#board-list a::after{display:none;position:absolute;bottom:0;left:0;width:100%;height:2px;content:'';pointer-events:none;background-color:var(--secondary-500)}#board-list .current::after,#board-list a:hover::after,#fourchanx-settings label{display:block}#full-board-list .boardList span,.pagelist button{display:none}#shortcuts:empty{display:none}:root.autohiding-scrollbar #shortcuts{margin-right:2rem}:root:not(.fappeTyme) #shortcut-fappe,:root:not(.werkTyme) #shortcut-werk{display:none}.indicator,.shortcut{display:inline-flex;align-items:center;justify-content:center}.indicator{background-color:var(--secondary-500);width:2rem;border-radius:2px;color:var(--text-primary-on-primary);height:2rem;transition:background-color .25s}.indicator:hover{background-color:var(--secondary-700);cursor:pointer}#shortcuts{display:flex;align-items:center}.shortcut{color:var(--text-icon-on-primary);min-width:3rem;height:3rem;padding:0 .5rem;transition:opacity .25s}.shortcut:hover{color:var(--text-secondary-on-primary)}.shortcut:not(#shortcut-fappe):not(#shortcut-werk):not(#shortcut-updater):not(#shortcut-stats):not(#shortcut-menu){font-family:var(--font-family-compliment)}.shortcut>.menu-button{display:inline-flex}#scroll-marker{position:absolute;display:none;height:1rem;left:0;right:0}#header-bar:not(.autohide) #scroll-marker{pointer-events:none}:root.fixed #scroll-marker{display:block}:root.fixed.top-header #scroll-marker{top:100%}:root.fixed.bottom-header #scroll-marker{bottom:100%}#scroll-progress{position:absolute;top:100%;left:0;width:100%;height:.25rem;opacity:0;background-color:var(--gray-300);border:0;will-change:opacity;transition:opacity .25s;pointer-events:none}:root.bottom-header #scroll-progress{bottom:100%;top:auto}#header-bar.scrolled #scroll-progress,#index-search-clear:hover::after,.notification .fa-times:hover::after{opacity:1}#scroll-progress::-webkit-progress-bar{background-color:var(--gray-300)}#scroll-progress::-webkit-progress-value{background-color:var(--green-500)}#scroll-progress::-moz-progress-bar{background-color:var(--green-500)}#notifications{position:fixed;top:0;height:0;text-align:center;left:0;right:0;visibility:visible}:root.fixed.top-header #header-bar.autohide #notifications,:root.fixed.top-header:not(.gallery-open) #notifications{position:absolute;top:100%}.notification{color:var(--text-primary-on-primary);margin:.5rem auto 0;border-radius:2px;width:50rem;max-width:100%;position:relative;padding:.5rem 1rem;will-change:opacity;transition:opacity .25s}.notification.error{background-color:var(--red-500)}.notification.warning{background-color:var(--orange-500)}.notification.success{background-color:var(--green-500)}.notification.info{background-color:var(--blue-500)}.notification .fa-times::after{position:absolute;right:1rem;top:50%;transform:translateY(-50%);opacity:.75;transition:opacity .25s}.message{white-space:pre-line;margin-right:2rem;max-height:10rem;overflow:auto}#boardNavDesktopFoot a:hover::after,.message a{border-bottom:1px solid}:root.hide-announcement .globalMessage,:root.tainted .report-error{display:none}.globalMessage{contain:content;position:fixed;bottom:1.5rem;left:1.5rem;max-width:25vw;z-index:7;background-color:var(--background-primary);display:flex;align-items:center;justify-content:flex-start;padding:1rem 1rem .5rem 1.5rem;border-radius:2px;box-shadow:0 0 1.5rem rgba(33,33,33,.25);transition:box-shadow .25s}.globalMessage:hover{box-shadow:0 0 1.75rem rgba(33,33,33,.5)}.globalMessage .hide-announcement{font-size:0;margin-left:.5rem}.globalMessage .hide-announcement>a{font-size:1rem;color:var(--primary-500);text-transform:uppercase;display:inline-block;padding:.25rem .5rem;border-radius:2px;transition:all .25s}.globalMessage .hide-announcement>a:hover{background-color:var(--primary-50)}#thread-stats,#updater{font-family:var(--font-family-monospace)}:root.float #thread-stats,:root.float #updater{position:fixed;z-index:5;background-color:var(--primary-500);display:inline-flex;justify-content:center;align-items:center;height:1.75rem;padding:.5rem}#thread-stats span,#updater{color:var(--text-secondary-on-primary)}#updater>.move{position:absolute;z-index:-1;top:-.125rem;right:-.125rem;bottom:-.125rem;left:-.125rem}#updater .new{color:var(--green-500)}#update-status:not(.empty)+#update-timer:not(.empty):not(.loading){margin-left:.5rem}#page-count,#update-timer{cursor:pointer}#thread-stats{color:var(--text-hint-on-primary)}#thread-stats .warning{color:var(--red-500)}:root.float #thread-stats>.move>span:not(#page-count){pointer-events:none}.navLinks.json-index{color:var(--text-primary-on-primary);background-color:var(--primary-500);width:75rem;padding:0 1.5rem;max-width:100%;margin:-2rem auto 3rem;position:relative;z-index:1;display:flex;align-items:center;justify-content:center;height:3rem}#index-search{color:var(--text-primary-on-background);background-color:var(--background-primary);padding-right:1.5rem;margin:0 1rem}#index-search-clear{font-size:0;width:0}#index-search-clear::after{position:relative;color:var(--red-500);font-size:1.125rem;left:-2.5rem;opacity:.75;transition:opacity .25s}#hidden-label{color:var(--text-secondary-on-primary)}#index-rev{visibility:hidden;width:1.5rem;height:100%;margin:0 .25rem;display:inline-flex;align-items:center}#index-rev::after{color:var(--text-icon-on-primary);visibility:visible;cursor:pointer;transition:color .25s}#index-rev:checked::after{color:var(--secondary-500)}.navLinks select{color:var(--text-primary-on-background);background-color:var(--background-primary);margin-right:.25rem}#index-search:not([data-searching])+#index-search-clear,.archlistlink,.bottomlink,.cataloglink,.indexlink,:root:not(.catalog-mode) #hidden-label,:root:not(.catalog-mode) #index-size,:root:not(.paged-mode) .pagelist{display:none}#index-options{display:flex;align-items:center}#lastlong-options{display:inline-flex;flex-direction:column;margin-right:.25rem}#lastlong-options>input{font-family:var(--font-family-monospace);text-align:center;background:0 0;height:50%;width:2.25rem;padding:0;border:0;margin:1px 0}@media (max-width:75rem){#header-bar{padding:0 .5rem}#board-list a,.shortcut{font-size:80%;padding:0 .25rem;min-width:1rem}}:root.index .board{min-height:calc(100vh - (40vh + 6rem))}:root.thread-view .board{min-height:calc(100vh - (40vh + 2rem + 95px + 121px))}.closed{position:fixed;display:flex;z-index:10;bottom:0;left:50%;height:3rem;align-items:center;justify-content:center;padding:0 1.5rem;transform:translate(-50%,0);color:var(--text-primary-on-dark);border-radius:2px;background-color:var(--gray-900)}.board{max-width:70rem;margin:-2rem auto 0;position:relative;z-index:1;contain:layout}.thread{padding:0 1.5rem;margin-bottom:1rem}.board .thread:last-of-type{margin-bottom:2rem}.postContainer{position:relative;margin-bottom:1rem}.section-main>fieldset>div[data-name]:last-of-type,.thread .postContainer:last-of-type{margin-bottom:0}.post,.summary{background-color:var(--background-primary)}.summary{text-align:center;line-height:3;margin-top:1px;z-index:1;position:relative;display:block}.post{display:flow-root;border-radius:2px;padding:.5rem 1rem;transition:background-color .25s;box-shadow:0 2px 10px 0 rgba(33,33,33,.1)}.container>a,.postMessage a,.postNum>a,.summary>.replylink{color:var(--primary-500)}.container>a:hover,.postMessage a:hover,.postNum>a:hover,.summary>.replylink:hover{color:var(--primary-700)}.postInfo{display:flex;align-items:center;padding:.5rem 1rem .275rem .5rem;background-color:rgba(117,117,117,.025)}.noFile .postInfo{border-bottom:1px solid var(--background-hint)}.postInfo>.subject{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.post{padding:0}.replylink:visited::after{background-color:var(--primary-700)}.postMessage:empty{display:none}.postMessage{font-size:1.125rem;margin:.5rem 1rem}:root.bottom-backlinks .container{display:block;font-size:87.5%;font-family:var(--font-family-monospace);padding:.25rem .5rem;background-color:rgba(117,117,117,.025);border-top:1px solid var(--background-hint);clear:both}:root .container:empty{display:none}.summary{margin-bottom:1rem}.inlined{opacity:.7}.inline{margin:.5rem 0;clear:both;display:flow-root;box-shadow:0 0 1rem rgba(33,33,33,.25);border-radius:2px}.postMessage .inline{margin-bottom:-1rem}.container+.inline{margin-top:1.5rem}.container~.inline:last-of-type{margin-bottom:.5rem}.postNum>span:last-child{font-size:0;vertical-align:middle}.pagelist,:root .pagelist:not(.json-index){display:flex;text-align:center}.pagelist a{color:var(--text-secondary-on-background);display:block;transition:color .25s,background-color .25s}.pagelist .pages>strong>a,.pagelist a:hover{color:var(--text-primary-on-primary);background-color:var(--primary-300)}.pagelist .pages>strong>a{background-color:var(--primary-500)}.pagelist .next,.pagelist .prev{width:10%}.pagelist .next a::after,.pagelist .prev a::after{font-size:4.25rem;flex:1;height:3rem;overflow:hidden;display:block;padding-top:.25rem}.pagelist .pages:not(.cataloglink){font-size:0;flex:1;display:flex}.pages a{font-size:3.5rem;font-weight:700;line-height:1;padding-top:.25rem;height:3rem;flex:1;overflow:hidden}.pages strong{flex:1}:root.hide-bottom-board-list #boardNavDesktopFoot{display:none}#boardNavDesktopFoot::before{content:'Full 4chan Board List';font-size:1.25rem;display:block;padding:2rem 1.5rem 0;max-width:75rem;margin:auto;cursor:ns-resize;color:var(--text-primary-on-background)}#boardNavDesktopFoot:not(.is-active)::before{padding-bottom:2rem}#boardNavDesktopFoot{font-size:0;font-family:var(--font-family-compliment);color:var(--text-secondary-on-background);background-color:var(--background-primary);border-top:1px solid var(--background-outline)}#boardNavDesktopFoot .boardList{display:flex;flex-wrap:wrap;flex-direction:column;height:calc(2rem*20);padding:1rem 1.5rem 2rem;width:100%;max-width:75rem;margin:auto;transition:height .25s;overflow-x:auto}#boardNavDesktopFoot:not(.is-active) .boardList{height:0;padding:0;overflow:hidden}#boardNavDesktopFoot a{display:block;margin-right:1rem;margin-bottom:.25rem}#boardNavDesktopFoot .current,#boardNavDesktopFoot a:hover,#footer-links a:hover{color:var(--text-primary-on-background)}#boardNavDesktopFoot a::before{content:attr(href);font-size:1rem;display:inline-block;margin-right:.5rem;min-width:5ch}#boardNavDesktopFoot a::after{content:attr(title);font-size:1rem;display:inline}.absBotText{font-size:.85rem;color:var(--text-secondary-on-background);background-color:var(--background-primary);user-select:none}.absBotDisclaimer{display:block;max-width:75rem;padding:2rem 1.5rem 1rem;margin:auto;border-top:1px solid var(--background-outline)}#footer-links{font-size:0;max-width:75rem;padding:0 1.5rem 2rem;margin:0 auto;position:relative}#footer-links a{font-size:.85rem;display:inline-block;width:calc((100%/4) - 1rem);margin-right:1rem}#footer-links::after{content:url(https://s.4cdn.org/image/favicon.ico);display:block;height:1rem;width:1rem;position:absolute;right:1.5rem;bottom:2.125rem;filter:grayscale(1);opacity:.5}.subject:not(:empty)::after{content:' by ';font-weight:400;color:var(--text-secondary-on-background);margin-right:.25rem}.ip-counter{color:var(--text-secondary-on-background)}.abbr,.dateTime,.page-num{color:var(--text-hint-on-background)}.dateTime{margin:0 .25rem}.postNum>a:first-child{font-size:0}.postNum>a:first-child::after{content:'#';font-size:1rem}.file{color:var(--text-hint-on-light);position:relative}.fileThumb{float:left;margin:.5rem}.fileText{font-size:87.5%;padding:0 1rem .125rem;background-color:rgba(117,117,117,.025);border-bottom:1px solid var(--background-hint)}.fileText a{color:var(--primary-300);unicode-bidi:isolate}.fa-download::after{font-size:1.125rem;vertical-align:bottom}.expanded-image>.post>.file>.fileThumb>img[data-md5],.expanded-image>.post>.file>.fileThumb>video[data-md5],.fileText-original,.fnswitch:hover>.fntrunc,.fnswitch:not(:hover)>.fnfull,.full-image{display:none}.fnfull{overflow-wrap:break-word}.full-image{cursor:pointer}video.full-image{min-width:20rem}.expanded-image>.post>.file>.fileThumb>.full-image{display:inline}.expanded-image{clear:left}.expanding{opacity:.5}:root.fit-height .full-image{max-height:100vh}:root.fixed.fit-height .full-image{max-height:calc(100vh - 3rem)}:root.fit-width .full-image{max-width:100%}:root.ua-gecko.fit-width .full-image{width:100%}.expanded-image.file--wide .postMessage,.fileThumb>.warning{clear:both}.expanded-image.file--wide>.post>.file>.fileThumb{position:relative;display:block!important;max-width:80vw;width:80vw;left:calc(-40vw + (70rem/2) - 2rem)}.expanded-image.file--wide>.post>.file>.fileThumb>.full-image{width:100%}.hide-reply-button,.hide-thread-button{position:absolute;top:1rem;right:2.5rem;opacity:0;z-index:1;will-change:opacity;transition:opacity .25s}.postContainer:hover>.hide-thread-button,.postContainer:hover>div>.hide-reply-button{opacity:.75}.fa-minus-square-o::after,.fa-minus-square::after{font-size:1.125rem;color:var(--text-secondary-on-background)}.stub~*,div[data-checked=false]>.suboption-list{display:none}.stub{display:flex;background-color:var(--background-primary);justify-content:space-between;align-items:center;padding:.5rem 1rem;height:3rem}.stub>a:first-child{display:flex}.stub .fa-plus-square,.stub .fa-plus-square-o{display:inline-flex;align-items:center;justify-content:center;margin-right:.25rem}.stub>.menu-button{color:var(--text-icon-on-background);display:inline-flex;align-items:center;justify-content:center;opacity:0;will-change:opacity;transition:opacity .25s}.stub:hover>.menu-button,.stub>.menu-button.active{opacity:1}#ihover,#qp{position:fixed;z-index:15}#qp .post{border:1px solid var(--background-outline);margin:1rem 1rem 1rem -1rem}#qp.warning{background-color:var(--background-primary);padding:.5rem 1rem}:root.catalog-mode #navlinks,:root.fappeTyme .thread>.noFile,:root.fappeTyme .threadContainer>.noFile{display:none}:root.werkTyme .catalog-thumb:not(.deleted-file):not(.no-file),:root.werkTyme .postContainer:not(.noFile) .fileThumb,:root:not(.werkTyme) .werkTyme-filename{display:none}.exif{font-size:.75rem;display:none}#overlay{position:fixed;z-index:16;background-color:rgba(33,33,33,.75);top:0;left:0;width:100%;height:100%}#fourchanx-settings{position:fixed;z-index:17;background-color:var(--background-primary);top:50%;left:50%;transform:translate(-50%,-50%);width:75rem;max-width:90%;height:90vh;margin:auto;display:flex;flex-direction:column;contain:paint;animation-name:bounceIn;animation-duration:.75s;animation-fill-mode:both}@keyframes bounceIn{0%,20%,40%,60%,80%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate(-50%,-50%) scale3d(.3,.3,.3)}20%{transform:translate(-50%,-50%) scale3d(1.1,1.1,1.1)}40%{transform:translate(-50%,-50%) scale3d(.9,.9,.9)}60%{opacity:1;transform:translate(-50%,-50%) scale3d(1.03,1.03,1.03)}80%{transform:translate(-50%,-50%) scale3d(.97,.97,.97)}to{opacity:1;transform:translate(-50%,-50%) scale3d(1,1,1)}}#fourchanx-settings nav{font-size:0;font-family:var(--font-family-compliment);color:var(--text-primary-on-primary);background-color:var(--primary-500);display:flex;align-items:center;padding:0 1.5rem;text-transform:lowercase}.credits,.sections-list{display:flex}#fourchanx-settings nav a:not([download]){font-size:1rem;display:inline-flex;justify-content:center;align-items:center;height:3rem;padding:0 .75rem;position:relative;min-width:3.5rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;will-change:opacity;opacity:.7;transition:opacity .25s;flex-grow:0;flex-shrink:0}#fourchanx-settings nav a:not([download]):hover{opacity:.85;cursor:pointer}#fourchanx-settings nav a.tab-selected,.post:hover>.postInfo>.menu-button,.post>.postInfo>.menu-button.active{opacity:1}#fourchanx-settings nav a:not(.close)::after{display:none;position:absolute;bottom:0;left:0;width:100%;height:2px;content:'';pointer-events:none;background-color:var(--secondary-500)}#fourchanx-settings nav a.tab-selected::after,#fourchanx-settings nav a:not(.close):hover::after{display:block}.imp-exp-result{flex:1;margin:0}.section-container{flex:1;overflow:auto;overscroll-behavior:contain;padding:0 1rem}.section-container>section{padding:.5rem 0 1rem}#fourchanx-settings fieldset{padding:1rem;border:1px solid rgba(33,33,33,.25);border-radius:2px;margin-bottom:1rem}#fourchanx-settings fieldset:last-of-type{margin:0}#fourchanx-settings legend{padding:0 .5rem}#fourchanx-settings textarea{font-family:var(--font-family-monospace);width:100%}#fourchanx-settings .description{color:var(--text-secondary-on-background);display:block}#fourchanx-settings button+.description{display:inline-block;margin-left:1rem}.suboption-list{position:relative;margin-left:1rem}.section-main>fieldset>div[data-name]{margin-left:4rem;margin-bottom:.5rem}.suboption-list>div[data-name]{margin-top:.5rem}.suboption-list>div[data-name]:not(:last-of-type){margin-bottom:.5rem}.section-main input[type=checkbox]{visibility:hidden;position:absolute;left:-99rem}.section-main label{position:relative}.section-main label::after,.section-main label::before{content:'';display:inline-block;position:absolute;transition:all .25s}.section-main label::before{opacity:.38;border-radius:1rem;width:3rem;height:1rem;background-color:#000;left:-4rem;top:1rem}.section-main div[data-checked=true]>label::before{background-color:var(--secondary-300);opacity:.5}.section-main label::after{background-color:#fafafa;border-radius:50%;width:1.5rem;height:1.5rem;left:-4.25rem;top:.75rem;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.section-main div[data-checked=true]>label::after{background-color:var(--secondary-500);transform:translateX(2rem)}.section-filter select{width:100%;margin-bottom:1rem}.section-filter ul{padding:0 2rem;margin:1rem 0}.section-filter textarea,.section-sauce textarea{height:40rem}#sauce-doc-expand:not(:checked)~#sauce-doc{max-height:12rem;overflow:auto}#sauce-doc>label{float:right;margin:0 .5rem}#sauce-doc{margin-bottom:1rem}#sauce-doc-expand+.riceCheck{display:none}.section-advanced>fieldset:first-child{position:relative}#archive-board-select{position:absolute;background-color:var(--background-primary);top:0;left:7.5rem}#archive-table{width:100%}#archive-table .archive-cell{text-align:center;width:calc(100%/3)}#lastarchivecheck+label{float:right}.section-advanced .note{font-size:80%;color:var(--text-secondary-on-background);margin-left:1rem}.section-advanced a{color:var(--primary-500)}.section-advanced textarea{height:10rem}.section-advanced textarea[name=archiveLists]{height:5rem}.favicon-preview>img:nth-of-type(3n+1){margin-left:.5rem}.section-keybinds table{margin:auto}.section-keybinds .field{font-family:var(--font-family-monospace)}.unscroll{overflow:hidden}#navlinks{position:fixed;z-index:10;top:5rem;right:0;font-size:0;color:var(--text-secondary-on-primary);background-color:var(--primary-500)}#navlinks a:hover::after{background-color:var(--primary-700);transition:background-color .25s}.post .menu-button{position:absolute;top:1rem;right:1rem;z-index:2}.post .menu-button::after{font-size:1.125rem;color:var(--text-secondary-on-background)}.post>.postInfo>.menu-button{opacity:0;will-change:opacity;transition:opacity .25s}.menu-button.active::after{border-radius:2px;box-shadow:0 0 .125rem .125em var(--primary-50)}#menu,.submenu{background-color:var(--background-primary);padding:.5rem 0;border:1px solid rgba(33,33,33,.25);border-radius:2px}#menu{z-index:16;font-size:90%;color:var(--text-primary-on-background);white-space:nowrap;position:fixed}.entry{line-height:2.5rem;display:block;position:relative;min-width:12.5rem;cursor:pointer;padding:0 1rem;transition:background-color .25s}.entry:hover{background-color:var(--background-secondary)}.entry .shortcut-text{font-size:75%;color:var(--text-hint-on-background);margin-left:.5rem}.entry.has-shortcut-text{display:flex;justify-content:space-between;align-items:center}.entry::after,.show-announcement.entry::after{color:var(--text-icon-on-background);position:absolute;right:.5rem;font-size:1rem;line-height:2.5rem}.submenu{display:none;position:absolute;left:100%;margin-top:calc((.5rem + 1px)*-1)}.submenu[style*='m: 0']{margin-top:0;margin-bottom:calc((.5rem + 1px)*-1)}.focused>.submenu{display:block}.entry .field{width:auto}.entry input[type=number]{width:5rem;padding:0 0 0 .375rem}.entry input[type=checkbox]{visibility:hidden;margin-right:.5rem}:root.ua-gecko .entry input[type=checkbox]{visibility:visible}:root.fixed-watcher #thread-watcher{z-index:10;position:fixed}#thread-watcher{z-index:5;position:absolute;background-color:var(--background-primary);white-space:nowrap;min-width:10rem}#thread-watcher>.move{font-family:var(--font-family-compliment);text-transform:lowercase;background-color:var(--primary-500);display:flex;align-items:center;height:3rem;padding:0 1.5rem;color:var(--text-primary-on-primary)}#thread-watcher>.move>.refresh{display:inline-flex;align-items:center;margin-left:.5rem;opacity:.7;transition:opacity .25s}#thread-watcher>.move>.refresh:hover,.watch-thread-link:hover::after{opacity:.85}#watcher-status{flex:1}#thread-watcher>.move>.menu-button{font-family:var(--font-family-default);text-transform:capitalize;display:inline-flex;align-items:center;margin-right:.5rem}#thread-watcher>.move>.close{font-size:0}#watched-threads{overflow-x:hidden;overflow-y:auto;border:1px solid var(--background-outline);border-top:0}#watched-threads:empty::after{content:'No threads being watched.';display:block;color:var(--text-hint-on-background);padding:.25rem 1rem}:root.fixed-watcher #watched-threads{max-height:85vh}:root:not(.fixed-watcher) #watched-threads:not(:hover){max-height:210px;overflow-y:hidden}#watched-threads>div{display:flex;align-items:center;height:3rem;padding:0 1.5rem}#watched-threads>div:nth-of-type(even),.flashListing tr:nth-of-type(odd){background-color:var(--background-secondary)}#watched-threads .fa-times{display:inline-flex;align-items:center;margin-right:.5rem;color:var(--red-500)}#watched-threads .fa-times:hover{color:var(--red-700)}#watched-threads .dead-thread>.watcher-link{text-decoration:line-through;color:var(--text-hint-on-background);opacity:.75}#watched-threads .replies-read{color:var(--text-secondary-on-background)}#watched-threads>.current .watcher-title{font-weight:700}#watched-threads .watcher-link{max-width:22.5rem;display:inline-flex;flex-direction:row}#watched-threads .watcher-unread{flex:0;margin-right:.25rem}#watched-threads .watcher-title{overflow:hidden;text-overflow:ellipsis;flex:0 1 auto}#watched-threads .replies-unread .watcher-link{color:var(--blue-500)}#watched-threads .replies-quoting-you .watcher-link{color:var(--red-500)}.watch-thread-link{position:relative;display:inline-block;vertical-align:middle}.watch-thread-link::after{color:var(--red-500);opacity:.7;transition:opacity .25s}.watch-thread-link.watched::after{opacity:1}.watch-thread-link::before{content:'';position:absolute;opacity:0;pointer-events:none;border-radius:50%;background-color:rgba(222,68,44,.26);height:1.25rem;width:1.25rem;transform-origin:50% 50%;transform:scale(.75);transition:opacity .25s,transform .25s}.watch-thread-link:active::before{opacity:1;transform:scale(2)}#embedding{position:fixed;z-index:10}#embedding.empty,.embedder:not(.embedded)>span{display:none}#embedding>div:first-child{display:flex;font-size:0;color:var(--text-primary-on-primary);background-color:var(--primary-500);padding:0 1.5rem;height:3rem;align-items:center}#embedding .move{flex:1}#embedding .move::before{content:'embedded content';font-family:var(--font-family-compliment);font-size:1rem}#embedding .jump::after,#qr .persona button{margin-right:.5rem}#media-embed{background-color:var(--background-primary)}#autohide,#file-n-submit:not(.has-file) #qr-filerm,#qr .oekaki-bg input[name=oekaki-bg]:not(:checked)+input[name=oekaki-bgcolor],#qr .oekaki.has-file,#qr select[data-name=thread],#qr.autohide:not(.focus):not(:hover):not(:active)>form,#qr.forced-anon [name=name],#qr.forced-anon [name=sub],#qr.reply-to-thread [name=filetag],#qr.reply-to-thread [name=sub],#qr.tex-preview .textarea>:not(#tex-preview),#qr:not(.dump) #dump-list-container,#qr:not(.has-math) #tex-preview-button,#qr:not(.has-sjis) #sjis-toggle,#qr:not(.tex-preview) #tex-preview,body:not(.board_f) #qr [name=filetag]{display:none}#qr{position:fixed;z-index:10;background-color:var(--background-primary);min-width:30rem;max-width:50rem;contain:paint;box-shadow:0 2px 10px 0 rgba(33,33,33,.1)}#qr>.move{color:var(--text-primary-on-primary);background-color:var(--primary-500);padding:0 1.5rem;display:flex;height:3rem;align-items:center;justify-content:space-between}#qr>.move>label{font-family:var(--font-family-compliment);text-transform:lowercase}#qr>.move>.close{font-size:0}#qr>form{padding:1rem;border:1px solid var(--background-outline);border-top:0;max-height:calc(100vh - 5rem);overflow-x:hidden;overflow-y:auto}#qr .persona{display:flex;margin-bottom:.5rem}#qr .persona .field{flex:1}#qr .persona .field:not(:first-of-type){margin-left:.5rem}#qr .persona .field:focus,#qr .persona .field:hover{flex:1.5}#qr.sjis-preview #sjis-toggle,#qr.tex-preview #tex-preview-button{background-color:var(--primary-300)}#qr .captcha-root,#qr .textarea{position:relative;margin-bottom:.5rem}#qr textarea{display:block;min-height:10rem;min-width:100%}#char-count{position:absolute;pointer-events:none;font-size:.75rem;right:.5rem;bottom:.5rem}#qr.captcha-v1 #qr-captcha-iframe{display:none}#qr.captcha-v1 .captcha-img{text-align:center;min-height:59px;min-width:302px;margin-bottom:.5rem;cursor:pointer}#qr.captcha-v1 .captcha-input{width:100%;margin-bottom:.5rem}#qr .captcha-container>div{margin:auto;width:304px;overflow:hidden}#qr .captcha-counter{display:block;width:100%;text-align:center;pointer-events:none}#qr.captcha-open .captcha-counter{position:absolute;bottom:3px}#qr .captcha-counter>a{pointer-events:auto;display:inline-block}#qr:not(.captcha-open) .captcha-counter>a{display:block;width:100%}#qr.captcha-v2 #qr-captcha-iframe{width:302px;height:423px;border:0;display:block;margin:auto}.goog-bubble-content{max-width:100vw;max-height:100vh;overflow:auto}.goog-bubble-content iframe{position:static!important}#g-recaptcha{min-height:78px;height:auto}#dump-list-container{position:relative;overflow-y:hidden;margin-bottom:.5rem}#dump-list{overflow:auto;white-space:nowrap;display:flex;flex-wrap:wrap;min-height:8.5rem;max-height:10rem}#dump-list .qr-preview:only-of-type>.remove,#file-n-submit.has-file #paste-area,#file-n-submit.has-file #url-button,#file-n-submit:not(.custom-cooldown) #custom-cooldown-button,#file-n-submit:not(.has-file) #qr-spoiler-label,#qr:not(.has-spoiler) #qr-spoiler-label,#qr:not(.has-spoiler) .qr-preview-spoiler,.qr-preview:not(.has-file) label{display:none}.qr-preview{display:inline-block;flex:none;counter-increment:thumbnails;height:7.5rem;width:7.5rem;cursor:move;padding:.25rem;opacity:.5;margin-right:.25rem;margin-bottom:.25rem;position:relative;overflow:hidden;background-size:cover;background-color:var(--gray-50);will-change:opacity,transform;transition:opacity .25s,transform .25s}.qr-preview::before{content:counter(thumbnails);position:aboslute;top:0;right:0;display:inline-flex;align-items:center;justify-content:center;font-size:.75rem;width:1.5rem;height:1.5rem;color:var(--text-primary-on-dark);background-color:var(--background-outline);border-radius:50%}.qr-preview:focus,.qr-preview:hover{opacity:.85}#selected{opacity:1}.qr-preview.drag{transform:scale(.8)}.qr-preview.over{transform:scale(1.1);z-index:1}.qr-preview .fa-times-circle::after{font-size:1.125rem;color:var(--red-500);cursor:pointer}.qr-preview.has-file>span{color:var(--text-primary-on-primary)}#add-post,.qr-preview-spoiler{font-size:0}#add-post{position:absolute;right:0;bottom:0}#add-post::after{font-size:3rem;color:var(--blue-500);transition:color .25s}#add-post:hover::after{color:var(--blue-700)}#qr .oekaki{display:flex;align-items:stretch;margin-bottom:.5rem}#qr-draw-button{width:15%;margin-right:.5rem}#qr .oekaki>label{flex:1;margin-right:.5rem}#qr .oekaki>label>span{color:var(--text-hint-on-background);margin-right:.25rem}#qr .oekaki>label>input{max-width:10rem}#qr .oekaki-bg{display:inline-block;width:15%}#qr .oekaki-bg input[name=oekaki-bg]{position:absolute;z-index:1}#qr .oekaki-bg input[name=oekaki-bgcolor]{position:absolute;top:0;left:0;height:100%;width:100%;border:none;padding:0;background:0 0}#file-n-submit{display:flex;align-items:stretch}#qr-file-button{width:15%;margin-right:.5rem}#qr-filename-container{all:unset;flex:1;display:flex;align-items:stretch;position:relative;margin-right:.5rem}#file-n-submit.has-file #qr-no-file,#qr-filename{display:none}#file-n-submit.has-file #qr-filename,#qr-no-file{flex:1;padding:.375rem .75rem .375rem 0;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#qr-no-file{color:var(--text-hint-on-background)}#qr-filename{background-color:transparent;border:0}#qr .oekaki-bg,.qr-spoiler-label{position:relative}#qr-file-spoiler{position:absolute;opacity:0;pointer-events:none}#qr-file-spoiler:checked+.checkbox-letter::after{opacity:1}.checkbox-letter{font-size:0}#qr-filename-container .fa::after,.checkbox-letter::after{margin-top:.375rem;margin-right:.25rem;opacity:.55;cursor:pointer;transition:opacity .25s}#qr-filename-container .fa:hover::after,#qr.dump #dump-button .fa::after,.checkbox-letter:hover::after,.gal-buttons>a:hover::after{opacity:.85}#custom-cooldown-button.disabled{opacity:.25}#file-n-submit input[type=submit]{background-color:var(--secondary-500);width:25%}#file-n-submit input[type=submit]:hover{background-color:var(--secondary-700)}#qr [type=file]{visibility:hidden;position:absolute}.flagSelector,select[name=filetag]{width:100%;margin-top:.5rem}.hashlink::before{content:' '}.backlink.forwardlink,.quotelink.forwardlink{background-image:url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 4'%3E%3Cstyle%3E.st%7Banimation:shift .5s linear infinite;stroke:currentColor;%7D@keyframes shift %7Bto %7Btransform:translateX%28-20px%29;%7D%7D%3C/style%3E%3Cpath fill='none' d='M0 3.5c5 0 5-3 10-3s5 3 10 3 5-3 10-3 5 3 10 3' class='st' style='stroke:var%28--primary-500, currentColor%29;'/%3E%3C/svg%3E");background-position:0 100%;background-size:auto 3px;background-repeat:repeat-x}.qmark-dead,.qmark-op{opacity:.5;position:relative;font-size:75%;line-height:0;vertical-align:baseline;top:-.5em}.deadlink{opacity:.5;text-decoration:line-through}:root.thread-hide .party-hat{left:19px}.party-hat{left:0;margin-top:-80px;position:absolute;pointer-events:none;z-index:1}.threadContainer{margin:0 0 1rem 1.5rem}#a-gallery,.gal-viewport{display:flex;flex-direction:row}#a-gallery{z-index:20;background-color:rgba(33,33,33,.75);top:0;right:0;bottom:0;left:0;position:fixed}.gal-viewport{align-items:stretch;flex:1;overflow:hidden;position:relative}.gal-buttons{position:absolute;top:1.5rem;left:50%;display:flex;color:var(--text-primary-on-dark);background-color:rgba(33,33,33,.5);padding:.5rem 1rem;border-radius:2px}.gal-buttons.gal-playing>.gal-start,.gal-buttons:not(.gal-playing)>.gal-stop{display:none}.gal-buttons>a::after{font-size:3rem;margin-right:1rem;opacity:.7;transition:opacity .25s}.gal-buttons>a:last-child::after{margin-right:0}.gal-close{font-size:0}.gal-count,.gal-name{display:block;position:absolute;left:50%;transform:translateX(-50%);background-color:rgba(33,33,33,.5);padding:.5rem 1rem;border-radius:2px}.gal-name{z-index:1;bottom:1.5rem;color:var(--text-primary-on-dark)}.gal-name:hover{color:var(--primary-300)}.gal-count{bottom:4.5rem;color:var(--text-hint-on-dark);pointer-events:none}.gal-count>span{color:var(--text-primary-on-dark)}.gal-image{flex:1;display:flex;align-items:flex-start;justify-content:space-around;overflow:hidden}.gal-image>a{display:block;margin:auto;max-width:100%}.gal-image iframe,:root.gal-pdf .gal-image a{width:100%;height:100%}:root.gal-fit-width .gal-image [src]{max-width:100%}:root.gal-fit-height .gal-image [src]{max-height:100vh}.gal-next,.gal-prev{color:var(--text-primary-on-dark)}.gal-next{cursor:pointer}.gal-next::after,.gal-prev::after{font-size:3rem;display:inline-flex;align-items:center;justify-content:center;height:100vh;padding:0 .75rem;opacity:.7}.gal-next:hover::after,.gal-prev:hover::after{background-color:rgba(33,33,33,.5)}.gal-prev{cursor:url('data:image/svg+xml;utf8, ') 16 16,auto}.gal-thumbnails{display:flex;flex-direction:column;align-items:center;overflow-y:auto}.gal-thumb{display:block}.gal-thumb:not(:last-of-type){margin-bottom:.5rem}.gal-highlight{outline:1px solid var(--secondary-500)}.is_arclist h4.center{display:block!important;text-align:center;color:var(--text-primary-on-primary);background-color:var(--red-500);padding:.5rem 1rem;margin:0}.flashListing{background-color:var(--background-primary);max-width:100%;margin:auto}.flashListing tr.highlightPost{background-color:#fffde7}.board_f.is_index .board{max-width:80%;margin-bottom:2rem}#arc-list{position:relative;max-width:70rem;z-index:1;margin:-2rem auto 0}#arc-list thead td,.board_f .flashListing>tbody>tr:first-child td{color:var(--text-primary-on-primary);text-align:center;background-color:var(--primary-500);border:1px solid var(--primary-700);padding:0 .5rem;min-width:5rem;height:3rem}.flashListing td{height:3rem;padding:0 .5rem;border:1px solid var(--background-outline)}.flashListing>tbody tr td:first-of-type{text-align:center}.file-col,.flashListing .subject span{font-size:0}.file-col a::after{color:var(--primary-500);border-bottom:1px solid}.file-col a:hover::after{color:var(--primary-700)}.flashListing .subject::after{display:none}.file-col a::after,.flashListing .subject span::after{content:attr(title);font-size:1rem}.board_f .flashListing tr:not(:first-child) td:nth-child(4),.board_f .flashListing tr:not(:first-child) td:nth-child(8){text-align:center}.board_f .flashListing tr:not(:first-child) td:nth-child(6){text-align:right}.board_f .flashListing tr:not(:first-child) td:nth-child(9){font-size:0;padding:0;border-color:var(--primary-700)}.board_f .flashListing tr:not(:first-child) td:nth-child(9) a::after{content:'View';font-size:1rem;color:var(--text-primary-on-primary);background-color:var(--primary-500);display:inline-flex;align-items:center;justify-content:center;height:100%;width:100%}#arc-list tr td:nth-of-type(1n){width:15%}#arc-list tr td:nth-of-type(2n){width:75%}#arc-list tr td:nth-of-type(3n){width:10%}#swf-embed{z-index:50}.post--hot>.post{background-image:linear-gradient(to bottom,var(--background-primary),#ffebee)}:root.ss16--invert .post--hot>.post{background-image:linear-gradient(to bottom,var(--background-primary),#573737)}.highlight,.post:target,.qphl,.yourPost>.post,:root.highlight-own .yourPost .stub{background-color:#fffde7}.quotesYou>.post{background-color:#fff8e1}.poster--founder>.post{background-color:#e0f2f1}.poster--founder .nameBlock{color:#009688}.poster--admin>.post{background-color:#ffebee}.capcodeAdmin,.poster--admin .nameBlock{color:#f44336}.poster--mod>.post{background-color:#ede7f6}.capcodeMod,.poster--mod .nameBlock{color:#673ab7}.poster--developer>.post{background-color:#e0f7fa}.poster--developer .nameBlock{color:#00bcd4}.poster--manager>.post{background-color:#fce4ec}.poster--manager .nameBlock{color:#e91e63}.poster--verified>.post{background-color:#e8eaf6}.poster--verified .nameBlock{color:#3f51b5}.poster--pass>.post{background-color:#f9fbe7}.poster--pass .n-pu{color:#afb42b;display:inline-block;vertical-align:middle}.file--gif .fileThumb,.file--video .fileThumb{position:relative}.file--gif:not(.expanded-image)>.post>.file>.fileThumb::after,.file--video:not(.expanded-image)>.post>.file>.fileThumb::after{font-size:3rem;position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background-image:linear-gradient(to bottom,rgba(33,33,33,0),#212121);opacity:.7;transition:opacity .25s}.file--gif:not(.expanded-image)>.post>.file:hover>.fileThumb::after,.file--video:not(.expanded-image)>.post>.file:hover>.fileThumb::after{opacity:.55}audio.controls-added{display:block;margin:auto}:root.anti-autoplay div.embed{position:static;width:auto;height:auto;text-align:center}:root.anti-autoplay .autoplay-removed{visibility:visible!important;min-width:640px;min-height:360px}:root[xmlns] #doc{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;min-height:100vh}:root[xmlns] #doc a{color:var(--primary-500)}:root[xmlns] #doc a:hover{color:var(--primary-700);border-bottom:1px solid}:root[xmlns] #doc .boxbar{color:var(--red-500)}:root[xmlns] #doc .boxcontent{margin-top:1rem}:root[xmlns] #copyright{color:var(--text-secondary-on-background);margin:0}.ss16--dialog{position:fixed;top:0;left:0;display:flex;align-items:center;justify-content:center;width:100%;height:100%;z-index:50;background-color:rgba(33,33,33,.75)}.ss16--dialog-window{background-color:var(--background-primary);box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12);border-radius:2px;padding:1rem 1.5rem}.ss16--dialog-header{font-size:2.5rem;font-weight:700;margin-bottom:1rem}.ss16--dialog-description{color:var(--text-secondary-on-background);margin-bottom:.5rem}.ss16--index-searching-curtain{position:fixed;top:0;left:0;width:100%;height:100vh;pointer-events:none;background-image:linear-gradient(to bottom,rgba(33,33,33,.75),rgba(33,33,33,0))}:root.ss16--index-searching .board:empty::after{content:'No threads found; try searching again.';color:var(--text-secondary-on-background);background-color:var(--background-primary);max-width:75%;margin:auto;display:flex;align-items:center;justify-content:center;height:40vh}.ss16--board-drawer-background{position:fixed;overflow:hidden;contain:strict;width:100%;height:100%;top:0;left:0;pointer-events:none;z-index:99}.ss16--board-drawer-background::before{content:'';display:block;will-change:opacity;background-color:rgba(33,33,33,.6);position:absolute;top:0;left:0;height:100%;width:100%;opacity:0;transition:opacity .25s}.drawer-open{pointer-events:auto}.drawer-open::before{opacity:1}.ss16--board-drawer{width:320px;background:var(--background-primary);left:0;right:initial;height:100%;display:flex;position:absolute;flex-direction:column;will-change:transform;transform:translateX(-100%);transition:transform .25s;overflow-y:scroll}.drawer-open .ss16--board-drawer{transform:translateX(0)}.board-list-entry{display:block;color:var(--text-primary-on-background);text-decoration:none;height:3rem;line-height:3;padding-left:1rem;transition:background-color .25s}.board-list-entry:hover{background-color:rgba(33,33,33,.12)}.board-list-entry.board--ws{color:#000;background-color:#d6daf0}.board-list-entry.board--nws{color:maroon;background-color:#f0e0d6}#board-list a.ss16--board-drawer-toggle{order:-1;opacity:1}:root.ss16--yotsuba.ws{--text-primary-on-primary:#000;--text-icon-on-primary:#000;--background-primary:#d6daf0;--background-secondary:#c7cbe4;--background-outline:rgba(161,166,202,.5);--primary-500:#c7cbe4;--primary-700:#a1a6ca}:root.ss16--yotsuba.ws body{color:#000;background-color:#eef2ff!important}:root.ss16--yotsuba.ws .abbr,:root.ss16--yotsuba.ws .dateTime,:root.ss16--yotsuba.ws .page-num{color:#000}:root.ss16--yotsuba.ws a{color:#34345c}:root.ss16--yotsuba.ws .post{background-color:#d6daf0!important}:root.ss16--yotsuba.ws .boardTitle{color:#af0a0f}:root.ss16--yotsuba.ws .subject{color:#0f0c5d}:root.ss16--yotsuba.ws .name{color:#117743}:root.ss16--yotsuba.ws .quote{color:#789922}:root.ss16--yotsuba.ws .quotelink,:root.ss16--yotsuba.ws .shortcut:hover,:root.ss16--yotsuba.ws a:hover{color:#d00}:root.ss16--yotsuba.nws .field:not(#qr-filename-container),:root.ss16--yotsuba.nws select,:root.ss16--yotsuba.ws .field:not(#qr-filename-container),:root.ss16--yotsuba.ws select{background-color:#fff!important;border-color:#ccc!important}:root.ss16--yotsuba.ws .field:focus,:root.ss16--yotsuba.ws select:focus{border-color:#98e!important}:root.ss16--yotsuba.ws.bottom-backlinks .container{background-color:#c7cbe4;border-color:#b7c5d9}:root.ss16--yotsuba.nws{--text-primary-on-primary:maroon;--text-icon-on-primary:maroon;--background-primary:#f0e0d6;--background-secondary:#ddcabe;--background-outline:rgba(198,178,165,.5);--primary-500:#ddcabe;--primary-700:#c6b0a2}:root.ss16--yotsuba.nws body{color:maroon;background-color:#ffe!important}:root.ss16--yotsuba.nws .abbr,:root.ss16--yotsuba.nws .dateTime,:root.ss16--yotsuba.nws .page-num{color:maroon}:root.ss16--yotsuba.nws a{color:#00e}:root.ss16--yotsuba.nws .quotelink{color:navy}:root.ss16--yotsuba.nws .post{background-color:#f0e0d6!important}:root.ss16--yotsuba.nws .boardTitle{color:#af0a0f}:root.ss16--yotsuba.nws .subject{color:#cc1105}:root.ss16--yotsuba.nws .name{color:#117743}:root.ss16--yotsuba.nws .quote{color:#789922}:root.ss16--yotsuba.nws .shortcut:hover,:root.ss16--yotsuba.nws a:hover{color:red}:root.ss16--yotsuba.nws .field:not(#qr-filename-container):focus,:root.ss16--yotsuba.nws select:focus{border-color:#ea8!important}:root.ss16--yotsuba.nws.bottom-backlinks .container{background-color:#ddcabe;border-color:#d9bfb7}.n-atb{border-radius:2px;padding:1px 4px;color:#353839}.atsb2018 table{width:100%;max-width:70rem;margin:1rem auto 2rem;border-radius:2px;background-color:var(--background-primary);box-shadow:0 2px 10px 0 rgba(33,33,33,.1)}.atsb2018 td,.atsb2018 th{padding:.5rem .75rem;border-bottom:1px solid var(--background-hint)}.atsb2018 tr:not(:first-child) td:first-child,.atsb2018 tr:not(:first-child) td:last-child{font-family:var(--font-family-monospace);font-size:1.125rem;text-align:center}.atsb2018 .atsgc{width:75%}.atsb2018 .atgg{height:2rem}.n-atb-0{background-color:#f56fa1}.n-atb-1{background-color:#7b3f00;color:#f2f3f4}.n-atb-2{background-color:#fffdd0}.n-atb-3{background-color:#e4d00a}.n-atb-4{background-color:#50c878}.n-atb-0::after{content:'Team Peep'}.n-atb-1::after{content:'Team Chocolate'}.n-atb-2::after{content:'Team Creme'}.n-atb-3::after{content:'Team Peanut Butter'}.n-atb-4::after{content:'Team Mini'}}
12 |
--------------------------------------------------------------------------------
/sidedish.user.js:
--------------------------------------------------------------------------------
1 | // ==UserScript==
2 | // @name ss21 sidedish
3 | // @version 2.5.3
4 | // @description A companion userscript for the ss21 userstyle.
5 | // @author saxamaphone69
6 | // @namespace https://github.com/saxamaphone69/ss21
7 | // @match *://boards.4chan.org/*
8 | // @match *://find.4chan.org/*
9 | // @match *://www.4chan.org/*
10 | // @connect 4chan.org
11 | // @connect a.4cdn.org
12 | // @connect 4cdn.org
13 | // @grant GM.xmlHttpRequest
14 | // @run-at document-start
15 | // @icon data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 96 960 960'%3E%3Cpath d='M70 622q0-15 11-29.5t29-23.5q22-9 44-22.5t54-13.5q48 0 72.5 28.5T343 590q37 0 64-28.5t74-28.5q47 0 72.5 28.5T618 590q36 0 62-28.5t73-28.5q33 0 54.5 14t43.5 23q18 9 29 23t11 29q0 13-9 21.5t-21 6.5q-36-8-56.5-26T753 606q-37 0-63.5 28.5T617 663q-48 0-74-28.5T481 606q-36 0-63.5 28.5T342 663q-47 0-72-28.5T208 606q-31 0-51.5 18T101 650q-13 2-22-6.5T70 622Zm0 185q0-14 10.5-28.5T110 756q22-9 44-23t54-14q47 0 72 28.5t63 28.5q37 0 64-28.5t74-28.5q47 0 72.5 28.5T617 776q36 0 62.5-28.5T753 719q32 0 54 14t45 23q18 8 28.5 22t10.5 29q0 14-9 22t-21 6q-36-8-56.5-25.5T753 792q-37 0-63.5 28.5T617 849q-48 0-74-28.5T481 792q-36 0-63.5 28.5T343 849q-47 0-73-28.5T208 792q-31 0-51.5 17.5T100 835q-12 2-21-6t-9-22Zm0-371q0-15 11-29.5t29-23.5q22-9 44-22.5t54-13.5q48 0 72.5 28.5T343 404q37 0 64-28.5t74-28.5q47 0 72.5 28.5T618 404q36 0 62-28.5t73-28.5q33 0 54.5 14t43.5 23q18 9 29 23t11 29q0 13-9 21.5t-21 6.5q-36-8-56.5-26T753 420q-37 0-63.5 28.5T617 477q-48 0-74-28.5T481 420q-36 0-64 28.5T342 477q-47 0-72-28.5T208 420q-31 0-51.5 18T101 464q-13 2-22-6.5T70 436Z'/%3E%3C/svg%3E
16 | // @noframes
17 | // @updateURL https://github.com/saxamaphone69/ss21/raw/main/sidedish.user.js
18 | // @downloadURL https://github.com/saxamaphone69/ss21/raw/main/sidedish.user.js
19 | // ==/UserScript==
20 | (async () => {
21 | "use strict";
22 | //console.group("Initialising ss21 sidedish...");
23 | /*! @ryanmorr/ready v1.4.0 | https://github.com/ryanmorr/ready */
24 | function _typeof(a){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}(function(a,b){"object"===("undefined"==typeof exports?"undefined":_typeof(exports))&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):(a=a||self,a.ready=b())})(this,function(){'use strict';function a(a){for(var b,c=a.selector,d=a.callback,e=g.querySelectorAll(c),f=0,j=e.length;f {
30 | switch (location.pathname.split("/")[2]) {
31 | case "thread":
32 | return "thread";
33 | case "catalog":
34 | return "catalog";
35 | case "archive":
36 | return "archive";
37 | default:
38 | return "index";
39 | }
40 | })();
41 |
42 | function $(sel, root) {
43 | return (root || d).querySelector(sel);
44 | }
45 |
46 | function $$(sel, root) {
47 | return [...(root || d).querySelectorAll(sel)];
48 | }
49 |
50 | // add `.site-loading` to `html` so css can hide the page loading
51 | doc.classList.add("site-loading");
52 |
53 | if (location.pathname.split("/")[1] === 'search') {
54 | doc.classList.remove("site-loading");
55 | doc.classList.add("is-search");
56 | $('link[title]', d.head).disabled = true;
57 | }
58 |
59 | function on(sel, events, cb) {
60 | sel = Array.isArray(sel) ? sel : [sel];
61 | let event = events.split(/\s+/);
62 | sel.forEach((sel) => {
63 | event.forEach((ev) => {
64 | sel.addEventListener(ev, cb, {
65 | passive: true,
66 | });
67 | });
68 | });
69 | return this;
70 | }
71 |
72 | function make(obj) {
73 | let key,
74 | el = d.createElement(obj.el);
75 | if (obj.cl4ss) {
76 | el.className = obj.cl4ss;
77 | }
78 | if (obj.html) {
79 | el.innerHTML = obj.html;
80 | }
81 | if (obj.attr) {
82 | for (key in obj.attr) {
83 | if (obj.attr.hasOwnProperty(key)) {
84 | el.setAttribute(key, obj.attr[key]);
85 | }
86 | }
87 | }
88 | if (obj.appendTo) {
89 | let parent = obj.appendTo;
90 | if (typeof parent === "string") {
91 | $(parent).appendChild(el);
92 | } else {
93 | parent.appendChild(el);
94 | }
95 | }
96 | if (obj.prepend) {
97 | let parent = obj.prepend;
98 | if (typeof parent === "string") {
99 | $(parent).prepend(el);
100 | } else {
101 | parent.prepend(el);
102 | }
103 | }
104 | return el;
105 | }
106 |
107 | function removeStyle(sel) {
108 | if (sel) {
109 | console.log(
110 | "%css21 sidedish is removing this stylesheet: ",
111 | "color:green;",
112 | sel
113 | );
114 | sel.remove();
115 | return true;
116 | } else {
117 | console.log("%css21 sidedish was unable to find: ", "color:red;", sel);
118 | return false;
119 | }
120 | }
121 |
122 | function sendNotification(type, content) {
123 | d.dispatchEvent(
124 | new CustomEvent("CreateNotification", {
125 | detail: {
126 | type: type, // success, info, warning, error
127 | content: content,
128 | lifetime: 0,
129 | },
130 | })
131 | );
132 | }
133 |
134 | function removeStyles() {
135 | removeStyle($("link[rel='stylesheet']", d.head));
136 | removeStyle($("style[type]", d.head)); // this removes the inline mobile css
137 | removeStyle($("#fourchanx-css", d.head)); // this removes the css required by 4chan x
138 | removeStyle($("#custom-css", d.head)); // this removes extra, custom css by 4chan x
139 | //removeStyle($("#sound-player-css", d.head)); // sounds player
140 | }
141 |
142 | function replace4chanFooterList() {
143 | // Okay, so this used to work fine. Then Cloudflare has added some CDN protection thingy to 4chan.org, which makes any attempts to read the HTML not work.
144 | // I had this as a request so that if any boards were added, it would auto update. I'll stick to hard coding it instead.
145 | let footer = $("#boardNavDesktopFoot");
146 | let boardList = `
147 |
Japanese Culture
148 |
160 |
Video Games
161 |
171 |
172 |
173 |
Interests
174 |
191 |
192 |
193 |
Creative
194 |
210 |
211 |
212 |
Other
213 |
225 |
Misc.(NSFW)
226 |
234 |
235 |
236 |
Adult(NSFW)
237 |
252 |
`;
253 | if (footer) {
254 | footer.innerHTML = `${boardList}
`;
255 | footer.classList.add('ss21--footer-enhanced');
256 | if ($(`#boardNavDesktopFoot a[href$="/${currentBoard}/`)) {
257 | $(`#boardNavDesktopFoot a[href$="/${currentBoard}/`).classList.add('current');
258 | }
259 | }
260 | }
261 |
262 | function init() {
263 | on(d, "IndexBuild", doc.classList.remove("site-loading"));
264 |
265 | const isChanX = doc && doc.classList.contains('fourchan-x');
266 |
267 | if (!isChanX) {
268 | doc.classList.remove("site-loading");
269 | doc.classList.add("is-ext");
270 | }
271 |
272 | on(d, "OpenSettings", function () {
273 | const settingDescriptions = $$(".description");
274 | for (let settingDescription of settingDescriptions) {
275 | const content = settingDescription.textContent.slice(2);
276 | settingDescription.textContent = content;
277 | }
278 | });
279 |
280 | removeStyles();
281 |
282 | // this should return the `#header-bar` element
283 | const headerBar = $("#header-bar") || $('#boardNavDesktop');
284 | // set the header height as its own variable for reference in css
285 | const updateHeight = () =>
286 | doc.style.setProperty('--headerBar-height', `${headerBar.offsetHeight}px`);
287 | new ResizeObserver(updateHeight).observe(headerBar);
288 | updateHeight();
289 |
290 | const scrollProgress = make({
291 | //el: "progress",
292 | el: "div",
293 | attr: {
294 | id: "scroll-progress"//,
295 | //value: 0,
296 | //max: 100,
297 | },
298 | appendTo: headerBar,
299 | });
300 | /*
301 | const hero = $(".boardBanner"),
302 | heroHeight = 480,
303 | boardTitle = $(".boardTitle"),
304 | mVal = 300;
305 |
306 | //boardTitle.style.setProperty("--length", boardTitle.innerText.length);
307 |
308 | let ticking = false;
309 |
310 | function rAF(args) {
311 | if (!ticking) {
312 | window.requestAnimationFrame(function () {
313 | ticking = false;
314 | });
315 | }
316 | ticking = true;
317 | }*/
318 | /*
319 | //https://github.com/adactio/FitText.js/blob/master/fittext.js
320 | //https://github.com/rikschennink/fitty/blob/gh-pages/src/fitty.js
321 | function fitText(el) {
322 | el.style.fontSize = Math.max(Math.min(el.clientWidth / 10, parseFloat(1/0)), parseFloat(-1/0)) + 'px';
323 | }
324 |
325 | fitText(hero);
326 | */
327 | // https://codepen.io/shshaw/pen/LYVBVve
328 | /*
329 | [...document.querySelectorAll("[data-fit-text]")].forEach(el => {
330 | // We just need the length of the string as a CSS variable...
331 | el.style.setProperty("--length", el.innerText.length);
332 | });
333 | */
334 | /*
335 | [data-fit-text] {
336 | // Sized via the viewport, but the --width variable could be set by JS based on the element or parent's width.
337 | --width: 100vw;
338 |
339 | // Adjust scale depending on your exact font.
340 | --scale: 0.9;
341 |
342 | font-size: calc(var(--width) / (var(--length, 1) * 0.5) * var(--scale, 1));
343 |
344 | font-family: "Poppins", sans-serif;
345 | font-weight: 600;
346 | line-height: 1;
347 | margin: 1rem 0;
348 | }
349 | */
350 | /*
351 | function fancyShadow(el) {
352 | let oVal = window.scrollY,
353 | nVal = (oVal / 2.5) * 0.1;
354 | if (oVal >= heroHeight) {
355 | headerBar.classList.add("scrolled");
356 | el.style.textShadow = "0 0 var(--primary-500)";
357 | } else {
358 | headerBar.classList.remove("scrolled");
359 | el.style.textShadow =
360 | 16 + -nVal + "px " + (16 + -nVal) + "px var(--primary-500)";
361 | }
362 | }
363 |
364 | function parallaxHero(el) {
365 | let oVal, cVal;
366 | oVal = Math.round(window.scrollY / 3);
367 | if (oVal < mVal) {
368 | cVal = oVal;
369 | } else {
370 | cVal = mVal;
371 | }
372 | el.style.transform = "translate3d(0, " + cVal + "px, 0)";
373 | }
374 |
375 | function progressScroll(el) {
376 | let dHeight = d.body.clientHeight,
377 | wHeight = window.innerHeight,
378 | scrollPercent = (window.scrollY / (dHeight - wHeight)) * 100;
379 | el.value = scrollPercent.toFixed(2);
380 | }
381 |
382 | on(window, "scroll", function (e) {
383 | rAF(parallaxHero(hero));
384 | rAF(fancyShadow(boardTitle));
385 | rAF(progressScroll(scrollProgress));
386 | });
387 | */
388 | function countBacks() {
389 | //console.log("Counting backlinks");
390 | let posts = $$(".post");
391 | for (let post of posts) {
392 | let backlinks = $$(".backlink", post);
393 | post.setAttribute("data-backlinks-length", backlinks.length);
394 | if (backlinks.length > 8) {
395 | post.parentNode.classList.add("post--hot");
396 | }
397 | }
398 | }
399 |
400 | function convertSummaries() {
401 | //console.log("Converting summaries");
402 | let summaries = $$(".summary:not(.summary-bottom, .preview-summary)");
403 | for (let summary of summaries) {
404 | summary.classList.add('summary--converted');
405 | let oldText, newText;
406 | oldText = summary.innerHTML;
407 | newText = oldText.replace(/(\d+(?=\ ))/g, "$1");
408 | summary.innerHTML = newText;
409 | //summary.innerHTML = `open_in_new` + newText + `` + oldText + ``;
410 | }
411 | }
412 |
413 | function markExternalLinks() {
414 | document.querySelectorAll('.postMessage .linkify').forEach(link => {
415 | // If a string is passed, convert it into an anchor element
416 | if (typeof link === 'string') {
417 | const temp = document.createElement('a');
418 | temp.href = link;
419 | link = temp;
420 | }
421 |
422 | let url;
423 | try {
424 | url = new URL(link.href);
425 | } catch (err) {
426 | // Skip this link if it's not a valid URL
427 | return link;
428 | }
429 |
430 | // Skip internal links
431 | if (url.origin === window.location.origin) return link;
432 |
433 | // Clear content and mark the link as parsed
434 | link.textContent = '';
435 | link.classList.add('link-parsed');
436 |
437 | // Define parts to wrap
438 | const parts = [
439 | { name: 'schema', value: url.protocol + '//' },
440 | { name: 'host', value: url.hostname },
441 | { name: 'path', value: url.pathname },
442 | { name: 'query', value: url.search },
443 | { name: 'hash', value: url.hash }
444 | ];
445 |
446 | // Create and append spans
447 | for (const { name, value } of parts) {
448 | if (value) {
449 | const span = document.createElement('span');
450 | span.classList.add(`link-parsed--${name}`);
451 | span.textContent = value;
452 | link.appendChild(span);
453 | }
454 | }
455 |
456 | return link;
457 | });
458 | }
459 |
460 | function checkers() {
461 | let obs = $$('.thread');
462 | [...obs].forEach((ob) => {
463 | const observer = new MutationObserver(function(mutations) {
464 | mutations.forEach(function(mutation) {
465 | if (mutation.type == 'childList') {
466 | convertSummaries()
467 | }
468 | });
469 | });
470 | observer.observe(ob, {childList: true});
471 | })/*
472 | const observer = new MutationObserver(function(mutations) {
473 | mutations.forEach(function(mutation) {
474 | console.log(mutation.removedNodes);
475 | });
476 | });
477 | observer.observe(ob, {childList: true});
478 | }*/
479 | }
480 | if (config === "index") {
481 | on(d, "IndexRefresh", checkers);
482 | }
483 | /*
484 | function watchElForDeletion(elToWatch, callback, parent = document.querySelector('body')){
485 | const observer = new MutationObserver(function (mutations) {
486 |
487 | // loop through all mutations
488 | mutations.forEach(function (mutation) {
489 |
490 | // check for changes to the child list
491 | if (mutation.type === 'childList') {
492 |
493 | // check if anything was removed and if the specific element we were looking for was removed
494 | if (mutation.removedNodes.length > 0 && mutation.removedNodes[0] === elToWatch) {
495 | callback();
496 | }
497 | }
498 | });
499 | });
500 |
501 | // start observing the parent - defaults to document body
502 | observer.observe(parent, { childList: true });
503 | };
504 |
505 | const target = $(".board");
506 | const config = {
507 | childList: true,
508 | };
509 |
510 | function subscriber(mutations) {
511 | convertSummaries();
512 | swapInfo();
513 | disabledPrevAndNext();
514 | }
515 | const observer = new MutationObserver(subscriber);
516 | observer.observe(target, config);
517 | */
518 | /*
519 | function watchThreadForSummary() {
520 | let threads = $$('.thread');
521 | for (let thread of threads) {
522 | const observer = new MutationObserver(function(mutations) {
523 | mutations.forEach(function(mutation) {
524 | if (mutation.type === 'childList') {
525 | console.log(mutation.target);
526 | if (mutation.target.classList.contains('summary')) {
527 | let summary = mutation.target;
528 | console.log(summary);
529 | //let oldText, newText;
530 | //oldText = summary.innerHTML;
531 | //newText = oldText.replace(/(\d+(?=\ ))/g, "$1");
532 | //summary.innerHTML = `open_in_new` + newText + `` + oldText + ``;
533 | //summary.innerHTML = `open_in_new` + newText + `` + oldText + ``;
534 | }
535 | }
536 | });
537 | });
538 | observer.observe(thread, {childList:true});
539 | }
540 | }
541 | */
542 | /*
543 | function getSumms() {
544 | console.log('RUNNING GETSUMMS');
545 | ready('.summary:not(.summary-bottom)', (element) => {
546 | let summary = element;
547 | let oldText, newText;
548 |
549 | oldText = summary.innerHTML;
550 | newText = oldText.replace(/(\d+(?=\ ))/g, "$1");
551 | console.log('old: ' + oldText + ', new: ' + newText);
552 | summary.innerHTML = `open_in_new` + newText + `` + oldText + ``;
553 | });
554 | convertSummaries();
555 | }
556 | */
557 | //getSumms();
558 |
559 | function swapInfo() {
560 | //console.log("Switching OP's post info");
561 | let ops = $$(".op");
562 | for (let op of ops) {
563 | let opPostInfo = $(".postInfo", op);
564 | op.prepend(opPostInfo);
565 | op.classList.add("post--file-swapped");
566 | }
567 | }
568 |
569 | function stripPageBrackets() {
570 | //console.log("Switching OP's post info");
571 | let pagenums = $$(".page-num:not(.page-num--converted)");
572 | for (let pagenum of pagenums) {
573 | let oldText, newText;
574 | oldText = pagenum.innerText;
575 | newText = oldText.match(/\d+/)[0];
576 | pagenum.innerHTML = `${newText}`;
577 | pagenum.classList.add('page-num--converted');
578 | }
579 | }
580 |
581 | // if a thumbnail has a tall aspect ratio, allow for greater styling control
582 | function checkHeights() {
583 | let thumbs = $$(".fileThumb");
584 | for (let thumb of thumbs) {
585 | let thumbSize = $("img", thumb);
586 | let thumbHeight = thumbSize.style.height;
587 | let thumbWidth = thumbSize.style.width;
588 | if (thumbHeight.slice(0, -2) > thumbWidth.slice(0, -2)) {
589 | // adds it to the `.thread` container
590 | thumb.parentNode.parentNode.parentNode.parentNode.classList.add("file--tall");
591 | }
592 | }
593 | }
594 |
595 | function checkAspect() {
596 | // https://stackoverflow.com/a/61544600
597 | let ERROR_ALLOWED = 0.05
598 | let STANDARD_ASPECT_RATIOS = [
599 | [1, '1'],
600 | [4/3, '43'],
601 | [5/4, '54'],
602 | [3/2, '32'],
603 | [16/10, '1610'],
604 | [16/9, '169'],
605 | [21/9, '219'],
606 | [32/9, '329'],
607 | ]
608 | let RATIOS = STANDARD_ASPECT_RATIOS.map(function(tpl){return tpl[0]}).sort()
609 | let LOOKUP = Object()
610 | for (let i=0; i < STANDARD_ASPECT_RATIOS.length; i++){
611 | LOOKUP[STANDARD_ASPECT_RATIOS[i][0]] = STANDARD_ASPECT_RATIOS[i][1]
612 | }
613 |
614 | /*
615 | Find the closest value in a sorted array
616 | */
617 | function findClosest(arrSorted, value){
618 | var closest = arrSorted[0]
619 | var closestDiff = Math.abs(arrSorted[0] - value)
620 | for (let i=1; i {
742 | const item = document.getElementById(id);
743 | if (item) {
744 | // Save original position
745 | originalPositions.set(id, { parent: item.parentElement, nextSibling: item.nextElementSibling });
746 |
747 | // Clone and append to placeholder
748 | const clone = item.cloneNode(true);
749 | clone.id = `${id}-clone`; // Ensure unique ID for the clone
750 | shortcutPlaceholder.appendChild(clone);
751 |
752 | // Initially hide the clone
753 | clone.hidden = true;
754 | }
755 | });
756 |
757 | const moveItemsToMenu = () => {
758 | const menu = document.querySelector('#shortcut-menu #menu');
759 | if (menu) {
760 | itemsToMove.forEach(id => {
761 | const clone = document.getElementById(`${id}-clone`);
762 | if (clone && clone.parentElement !== menu) {
763 | menu.appendChild(clone);
764 | clone.hidden = false; // Show the clone when added to the menu
765 | }
766 | });
767 | }
768 | };
769 |
770 | const handleResize = (width) => {
771 | if (width < 600) {
772 | const menu = document.querySelector('#shortcut-menu #menu');
773 | if (!menu) {
774 | // Hide originals and show clones in the placeholder
775 | itemsToMove.forEach(id => {
776 | const original = document.getElementById(id);
777 | const clone = document.getElementById(`${id}-clone`);
778 | if (original) original.hidden = true;
779 | if (clone) clone.hidden = false;
780 | });
781 | }
782 |
783 | // Observe for menu creation and move clones to it
784 | const menuObserver = new MutationObserver((mutations) => {
785 | mutations.forEach(mutation => {
786 | if (mutation.type === 'childList') {
787 | const menu = document.querySelector('#shortcut-menu #menu');
788 | if (menu) {
789 | moveItemsToMenu();
790 | menuObserver.disconnect(); // Stop observing once #menu is created
791 | }
792 | }
793 | });
794 | });
795 |
796 | menuObserver.observe(shortcutMenu, { childList: true, subtree: true });
797 | } else {
798 | // Restore originals and hide clones when width >= 600px
799 | itemsToMove.forEach(id => {
800 | const original = document.getElementById(id);
801 | const clone = document.getElementById(`${id}-clone`);
802 | if (original) original.hidden = false;
803 | if (clone) clone.hidden = true;
804 |
805 | // Restore original position if it's not already in place
806 | const originalPosition = originalPositions.get(id);
807 | if (originalPosition && original.parentElement !== originalPosition.parent) {
808 | const { parent, nextSibling } = originalPosition;
809 | parent.insertBefore(original, nextSibling || null);
810 | }
811 | });
812 | }
813 | };
814 |
815 | const resizeObserver = new ResizeObserver(entries => {
816 | for (let entry of entries) {
817 | if (entry.target === document.body) {
818 | const width = entry.contentRect.width;
819 | handleResize(width);
820 | }
821 | }
822 | });
823 |
824 | resizeObserver.observe(document.body);
825 | }
826 |
827 | moveShortcuts();
828 | */
829 | // two from https://github.com/duanemoody
830 | // javascript:let p=$$("a.download-button"), i=0, v=setInterval(() => {p[i++].click(); (i>p.length) && clearInterval(v);}, 1000);
831 | // javascript:var pics=document.querySelectorAll("a.download-button"), counter=0, interval=setInterval(function() {pics[counter].click(); counter++; if (counter > pics.length) {clearInterval(interval);}}, 1000);
832 | // https://stackoverflow.com/questions/30088897/trying-to-download-all-of-the-images-on-the-website-using-javascript
833 | // https://gist.github.com/sfrdmn/8834747
834 | // https://gist.github.com/lucidBrot/432d2c6184a188a060e58dbb36bd2084
835 | function downloadMedia() {
836 | ready('#shortcuts', (element) => {
837 | let _this = element;
838 | make({
839 | el: 'a',
840 | cl4ss: 'material-icons shortcut ss21--download-all',
841 | attr: {
842 | title: 'Download all media in thread'
843 | },
844 | prepend: _this,
845 | html: `download_for_offline`
846 | });
847 | });
848 | let imgToggle = $('.ss21--download-all');
849 | imgToggle.addEventListener('click', function() {
850 | let allMedia = [].slice.call($$('.download-button'));
851 | let i = 0;
852 | try {
853 | allMedia.forEach(function(media) {
854 | downloadThem(media, i++);
855 | })
856 | } catch(e) {
857 | console.log('Something went wrong...', e);
858 | }
859 | function downloadThem(media) {
860 | setTimeout(() => {
861 | media.click();
862 | }, i * 500)
863 | }
864 | });
865 | }
866 | if (config === "thread") {
867 | downloadMedia();
868 | }
869 |
870 | function boardDrawer() {
871 | let boardDrawer = make({
872 | el: "aside",
873 | cl4ss: "ss21--board-drawer-background",
874 | appendTo: "body",
875 | html: ``,
876 | });
877 | ready("#board-list", (element) => {
878 | let _this = element;
879 | make({
880 | el: "a",
881 | cl4ss: "material-icons ss21--board-drawer-toggle",
882 | prepend: headerBar,
883 | attr: {
884 | title: "Open board list drawer",
885 | },
886 | html: `menu`,
887 | });
888 | });
889 | let boardNavToggle = $(".ss21--board-drawer-toggle");
890 | let url = "https://a.4cdn.org/boards.json";
891 |
892 | function createNode(element) {
893 | return d.createElement(element);
894 | }
895 |
896 | function append(parent, el) {
897 | return parent.appendChild(el);
898 | }
899 |
900 | boardDrawer.addEventListener("click", function (e) {
901 | if (e.target === boardDrawer) {
902 | boardDrawer.classList.remove("drawer-open");
903 | }
904 | });
905 |
906 | on(boardNavToggle, "click", function () {
907 | boardDrawer.classList.add("drawer-open");
908 | fetch(url)
909 | .then((resp) => resp.json())
910 | .then(function (data) {
911 | let boards = data.boards;
912 | return boards.map(function (board) {
913 | let anchor = createNode("a");
914 | anchor.classList.add("board-list-entry");
915 | anchor.textContent = `/${board.board}/ - ${board.title}`;
916 | if (board.ws_board === 0) {
917 | anchor.classList.add("board--nws");
918 | anchor.href = `https://boards.4chan.org/${board.board}/`;
919 | } else {
920 | anchor.classList.add("board--ws");
921 | anchor.href = `https://boards.4chan.org/${board.board}/`;
922 | }
923 | append($(".ss21--board-drawer"), anchor);
924 | });
925 | });
926 | });
927 | }
928 |
929 | //boardDrawer();
930 | /*
931 | function getBoardInfo() {
932 | let cbBoard, cbTitle, cbMetad;
933 | fetch("https://a.4cdn.org/boards.json")
934 | .then(resp => resp.json())
935 | .then(data => {
936 | let foundBoard = data.boards.find(board => board.board === currentBoard);
937 | cbBoard = foundBoard.board;
938 | cbTitle = foundBoard.title;
939 | cbMetad = foundBoard.meta_description.replace(/"/g, '"').replace(/&/g, '&');
940 | });
941 | }
942 |
943 | getBoardInfo();
944 | */
945 | function changeFileName(observer) {
946 | // Temporarily disconnect the observer to avoid a loop
947 | if (observer) observer.disconnect();
948 |
949 | $('#qr-file-button').value = 'upload';
950 | $('#file-n-submit input[type="submit"]').value = 'send';
951 |
952 | // Reconnect the observer after the change with inline config
953 | if (observer) {
954 | observer.observe($('#qr'), {
955 | attributes: true,// Watch for attribute changes
956 | attributeFilter: ['value'], // Only watch the 'value' attribute
957 | subtree: true,// Monitor changes within child elements of #qr
958 | });
959 | }
960 | }
961 | /*
962 | on(d, 'QRDialogCreation', function() {
963 | const captchaContainer = document.querySelector(".captcha-root");
964 |
965 | let tBgObserver = null;
966 |
967 | const observeTBgStyle = (tBg) => {
968 | // Disconnect any existing observer to avoid duplicate listeners
969 | if (tBgObserver) {
970 | tBgObserver.disconnect();
971 | tBgObserver = null;
972 | }
973 |
974 | // If tBg exists, observe its style attribute
975 | if (tBg) {
976 | tBgObserver = new MutationObserver(() => {
977 | const bgImage = window.getComputedStyle(tBg).backgroundImage;
978 |
979 | if (bgImage && bgImage !== "none") {
980 | captchaContainer.classList.add("captcha-loaded");
981 | } else {
982 | captchaContainer.classList.remove("captcha-loaded");
983 | }
984 | });
985 |
986 | tBgObserver.observe(tBg, {
987 | attributes: true,
988 | attributeFilter: ["style"], // Only watch the style attribute
989 | });
990 |
991 | // Run the check immediately to handle cases where the background-image is already set
992 | const bgImage = window.getComputedStyle(tBg).backgroundImage;
993 | if (bgImage && bgImage !== "none") {
994 | captchaContainer.classList.add("captcha-loaded");
995 | } else {
996 | captchaContainer.classList.remove("captcha-loaded");
997 | }
998 | } else {
999 | // If tBg is not present, ensure the class is removed
1000 | captchaContainer.classList.remove("captcha-loaded");
1001 | }
1002 | };
1003 |
1004 | const observer = new MutationObserver(() => {
1005 | const tBg = captchaContainer.querySelector("#t-bg");
1006 | observeTBgStyle(tBg); // Attach a new observer to the re-added #t-bg element
1007 | });
1008 |
1009 | observer.observe(captchaContainer, {
1010 | childList: true, // Monitor direct child changes
1011 | subtree: true, // Monitor all descendant changes
1012 | });
1013 |
1014 | });
1015 | */
1016 | on(d, 'QRDialogCreation', function() {
1017 | const observer = new MutationObserver((mutationsList) => {
1018 | for (const mutation of mutationsList) {
1019 | if (mutation.target.matches('#file-n-submit input[type="submit"]') && mutation.attributeName === 'value') {
1020 | changeFileName(observer);
1021 | }
1022 | }
1023 | });
1024 |
1025 | // Initial call to set the values
1026 | changeFileName(observer);
1027 | observer.observe($('#qr'), {
1028 | attributes: true,// Watch for attribute changes
1029 | attributeFilter: ['value'], // Only watch the 'value' attribute
1030 | subtree: true,// Monitor changes within child elements of #qr
1031 | });
1032 | });
1033 |
1034 | function resizeQuotePreviews() {
1035 | ready("#qp", (element) => {
1036 | let _this = element;
1037 | let winHeight = window.innerHeight;
1038 | let qpHeight = _this.offsetHeight + 32;
1039 | if (qpHeight > winHeight) {
1040 | let scaledHeight = winHeight / qpHeight;
1041 | _this.style.transformOrigin = "top left";
1042 | _this.style.transform = "scale(" + scaledHeight + ")";
1043 | }
1044 | });
1045 | }
1046 |
1047 | resizeQuotePreviews();
1048 |
1049 | replace4chanFooterList();
1050 |
1051 | function getSortMode() {
1052 | //console.log('sorting mode');
1053 | let sorter, boardCon, oldVal;
1054 | sorter = $("#index-sort");
1055 | boardCon = $(".board");
1056 | oldVal = sorter.value;
1057 | boardCon.classList.add(oldVal);
1058 | on(sorter, "change", () => {
1059 | boardCon.classList.remove(oldVal);
1060 | boardCon.classList.add(sorter.value);
1061 | });
1062 | }
1063 |
1064 | if (config === "index") {
1065 | on(d, "IndexRefresh", getSortMode);
1066 | }
1067 |
1068 | function passLinker() {
1069 | let passLink, bottomLinks;
1070 | passLink = $(".pass-link-container");
1071 | bottomLinks = $("#footer-links");
1072 | if (passLink) {
1073 | bottomLinks.appendChild(passLink);
1074 | } else {
1075 | return false;
1076 | }
1077 | }
1078 |
1079 | passLinker();
1080 |
1081 | function masonry() {
1082 | if(!getComputedStyle(document.documentElement).getPropertyValue("--masonry")) {
1083 | return false;
1084 | }
1085 | let grids = [...document.querySelectorAll(':root.catalog-mode .board')];
1086 |
1087 | if (grids.length && getComputedStyle(grids[0]).gridTemplateRows !== 'masonry' && getComputedStyle(grids[0]).gridAutoRows !== '240px') {
1088 | //console.log('got a grid, going to masonry it', grids);
1089 | grids = grids.map(grid => ({
1090 | _el: grid,
1091 | gap: parseFloat(getComputedStyle(grid).gridRowGap),
1092 | items: [...grid.childNodes].filter(c => c.nodeType === 1 && +getComputedStyle(c).gridColumnEnd !== -1),
1093 | ncol: 0,
1094 | mod: 0 }));
1095 |
1096 | function layout() {
1097 | //console.log('running layout');
1098 | grids.forEach(grid => {
1099 | /* get the post relayout number of columns */
1100 | let ncol = getComputedStyle(grid._el).gridTemplateColumns.split(' ').length;
1101 |
1102 | grid.items.forEach(c => {
1103 | let new_h = c.getBoundingClientRect().height;
1104 |
1105 | if (new_h !== +c.dataset.h) {
1106 | c.dataset.h = new_h;
1107 | grid.mod++;
1108 | }
1109 | });
1110 |
1111 | /* if the number of columns has changed */
1112 | if (grid.ncol !== ncol || grid.mod) {
1113 | /* update number of columns */
1114 | grid.ncol = ncol;
1115 |
1116 | /* revert to initial positioning, no margin */
1117 | grid.items.forEach(c => c.style.removeProperty('margin-top'));
1118 |
1119 | /* if we have more than one column */
1120 | if (grid.ncol > 1) {
1121 | grid.items.slice(ncol).forEach((c, i) => {
1122 | let prev_fin = grid.items[i].getBoundingClientRect().bottom /* bottom edge of item above */,
1123 | curr_ini = c.getBoundingClientRect().top /* top edge of current item */;
1124 | c.style.marginTop = `${prev_fin + grid.gap - curr_ini}px`;
1125 | });
1126 | }
1127 |
1128 | grid.mod = 0;
1129 | }
1130 | });
1131 | }
1132 | layout();
1133 | //addEventListener('load', e => {
1134 | // layout(); /* initial load */
1135 | addEventListener('resize', layout, false); /* on resize */
1136 | //}, false);
1137 | }
1138 | }
1139 | if (config === "index") {
1140 | const target = $(".board");
1141 | const config = {
1142 | childList: true,
1143 | };
1144 |
1145 | function subscriber(mutations) {
1146 | masonry();
1147 | //if(!getComputedStyle(document.documentElement).getPropertyValue("--masonry")) {
1148 | // masonry();
1149 | //}
1150 | }
1151 | const observer = new MutationObserver(subscriber);
1152 | observer.observe(target, config);
1153 | }
1154 | //on(d, "IndexBuild", masonry);
1155 | //const isInViewport = (e, {top:t, height:h} = e.getBoundingClientRect()) => t <= innerHeight && t + h >= 0;
1156 | /*
1157 | function switchOPimg() {
1158 | let files = $$('.catalog-post');
1159 | for (let file of files) {
1160 | let fullLink = $("a.fileThumb", file);
1161 | let thumbLink = $("a.fileThumb img", file);
1162 | let catLink = $(".catalog-thumb", file);
1163 | if (!fullLink) {
1164 | console.log('no file');
1165 | } else if (fullLink.href.endsWith("m")) {
1166 | let OpVideo = d.createElement("video");
1167 | OpVideo.classList.add("catalog-thumb-video");
1168 | OpVideo.poster = thumbLink.src;
1169 | OpVideo.loop = true;
1170 | OpVideo.playsinline = true;
1171 | OpVideo.autoplay = true;
1172 | OpVideo.src = fullLink;
1173 | //OpVideo.play();
1174 | OpVideo.muted = true;
1175 | catLink.before(OpVideo);
1176 | catLink.remove();
1177 | // let playPromise = OpVideo.play();
1178 | // if (playPromise !== undefined) {
1179 | // playPromise.then((_) => {
1180 | // // all good, video started
1181 | // }).catch((error) => {
1182 | // // hey the video didn't play
1183 | // //if (isInViewport(OpVideo) === true) {
1184 | // OpVideo.play();
1185 | // //}
1186 | // });
1187 | // }
1188 | } else {
1189 | catLink.src = fullLink.href;
1190 | }
1191 | }
1192 | }
1193 | function playVids() {
1194 | const OPvids = [...document.querySelectorAll('.file--video')];
1195 | OPvids.forEach(el => {
1196 | el.addEventListener("mouseover", (e) => {
1197 | $('.catalog-thumb-video', el).play();
1198 | }, false);
1199 | el.addEventListener('mouseleave', (e) => {
1200 | $('.catalog-thumb-video', el).pause();
1201 | }, false);
1202 | })
1203 | }
1204 | if (doc.classList.contains('catalog-mode')) {
1205 | on(d, "IndexRefresh", switchOPimg);
1206 | on(d, "IndexRefresh", playVids);
1207 | //on(d, "IndexBuild", switchOPimg);
1208 | //on(d, "IndexRefresh", masonry);
1209 | // window.addEventListener('resize', masonry);
1210 | // masonry();
1211 | }
1212 | */
1213 |
1214 |
1215 | // https://www.smashingmagazine.com/2021/07/dynamic-header-intersection-observer/
1216 | // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API
1217 | /*
1218 | function intObs() {
1219 | const boxes = [...document.querySelectorAll('.catalog-thumb-video')]
1220 |
1221 | const getOptions = () => {
1222 | return {
1223 | root: null,
1224 | rootMargin: '0px',
1225 | threshold: 1
1226 | }
1227 | }
1228 |
1229 | const setInViewStyles = (target) => {
1230 | target.classList.add('is-inview')
1231 | target.play()
1232 | //$('.catalog-thumb-video', target).play();
1233 | //dElementToInfoBox(target)
1234 | // console.log('in view')
1235 | }
1236 |
1237 | const setOutOfViewStyles = (target) => {
1238 | target.classList.remove('is-inview')
1239 | target.pause()
1240 | //$('.catalog-thumb-video', target).pause();
1241 | //moveElementFromInfoBox(target)
1242 | // console.log('out of view')
1243 | }
1244 |
1245 | const onIntersect = (entries) => {
1246 | entries.forEach(entry => {
1247 | const { target, isIntersecting, intersectionRatio } = entry
1248 | //console.log(entry)
1249 |
1250 | if (intersectionRatio >= 1 && isIntersecting) {
1251 | return setInViewStyles(target)
1252 | }
1253 |
1254 | return setOutOfViewStyles(target)
1255 | })
1256 | }
1257 |
1258 | const reinitObserver = (options) => {
1259 | if (observer) {
1260 | observer.disconnect()
1261 | }
1262 |
1263 | setTimeout(() => {
1264 | observer = new IntersectionObserver(onIntersect, options)
1265 |
1266 | boxes.forEach(el => {
1267 | observer.observe(el)
1268 | })
1269 | }, 100)
1270 | }
1271 |
1272 | let observer = new IntersectionObserver(onIntersect, getOptions())
1273 |
1274 | boxes.forEach(el => {
1275 | observer.observe(el)
1276 | })
1277 | }
1278 |
1279 | on(d, "IndexRefresh", intObs);
1280 | */
1281 |
1282 | function spinnerText() {
1283 | let footer = $("#absbot");
1284 | let svgSpin = make({
1285 | el: "div",
1286 | cl4ss: "ss21--spinner-text",
1287 | html: ``,
1288 | appendTo: footer
1289 | });
1290 | }
1291 |
1292 | spinnerText();
1293 |
1294 | if (location.pathname.split("/")[1] === "fit") {
1295 | function weightConverter() {
1296 | let weightElement = make({
1297 | el: "aside",
1298 | cl4ss: "ss21--fit ss21--fit-weight",
1299 | appendTo: "body",
1300 | html: ``,
1304 | });
1305 | }
1306 |
1307 | weightConverter();
1308 |
1309 | function heightConverter() {
1310 | let heightElement = make({
1311 | el: "aside",
1312 | cl4ss: "ss21--fit ss21--fit-height",
1313 | appendTo: "body",
1314 | html: ``,
1319 | });
1320 | }
1321 |
1322 | heightConverter();
1323 | }
1324 |
1325 | function searchCurtain() {
1326 | ready("#index-search", (element) => {
1327 | let _this = element;
1328 | make({
1329 | el: "aside",
1330 | cl4ss: "ss21--index-searching-curtain",
1331 | appendTo: "body",
1332 | });
1333 | on(_this, "focus", function () {
1334 | doc.classList.add("ss21--index-searching");
1335 | });
1336 | on(_this, "blur", function () {
1337 | if (_this.dataset.searching != 1) {
1338 | doc.classList.remove("ss21--index-searching");
1339 | }
1340 | });
1341 | });
1342 | }
1343 |
1344 | if (config === "index") {
1345 | searchCurtain();
1346 | }
1347 | /*
1348 | function checkBlockedBanner() {
1349 | ready('#bannerCnt > img', (element) => {
1350 | let _this = element;
1351 | setTimeout(function () {
1352 | if (_this.attributes.length === 3) {
1353 | doc.classList.add("ss21--banner-blocked");
1354 | //_this.parentNode.removeAttribute('title');
1355 | $('#bannerCnt').removeAttribute('title');
1356 | }
1357 | }, 1000);
1358 | });
1359 | }
1360 |
1361 | on(d, "IndexRefresh", checkBlockedBanner);
1362 | */
1363 | function checkBlockedBanner() {
1364 | function rrready(selector, callback) {
1365 | const observer = new MutationObserver((mutations, observer) => {
1366 | const element = document.querySelector(selector);
1367 | if (element) {
1368 | observer.disconnect();
1369 | callback(element);
1370 | }
1371 | });
1372 |
1373 | observer.observe(document.body, {
1374 | childList: true,
1375 | subtree: true
1376 | });
1377 |
1378 | // Check if the element is already present
1379 | const element = document.querySelector(selector);
1380 | if (element) {
1381 | observer.disconnect();
1382 | callback(element);
1383 | }
1384 | }
1385 |
1386 | rrready('#bannerCnt > img', (element) => {
1387 | function checkImage() {
1388 | if (element.complete && element.naturalWidth === 0) {
1389 | rrready('img[alt="4chan"]', (element) => {
1390 | if (element.attributes.length === 3) {
1391 | document.documentElement.classList.add("ss21--banner-blocked");
1392 | element.parentNode.removeAttribute('title');
1393 | } else {
1394 | setTimeout(checkImage, 1000);
1395 | }
1396 | });
1397 | } else if (element.complete) {
1398 | document.documentElement.classList.add("ss21--banner-unblocked");
1399 | } else {
1400 | setTimeout(checkImage, 1000); // Retry after 1 second if not complete
1401 | }
1402 | }
1403 |
1404 | checkImage();
1405 | });
1406 | }
1407 |
1408 | // Usage
1409 | checkBlockedBanner();
1410 |
1411 | function relocateElementBySelector(elementSelector, destSelector, location) {
1412 | // Find the element to relocate
1413 | let element = document.querySelector(elementSelector);
1414 |
1415 | if (!element) {
1416 | console.error('Element not found');
1417 | return;
1418 | }
1419 |
1420 | // Find the destination element where the element will be moved
1421 | let destElement = document.querySelector(destSelector);
1422 |
1423 | if (!destElement) {
1424 | console.error('Destination element not found');
1425 | return;
1426 | }
1427 |
1428 | // Remove the element from its current parent
1429 | let elementParent = element.parentElement;
1430 | if (elementParent) {
1431 | elementParent.removeChild(element);
1432 | }
1433 |
1434 | // Append the element to the destination element
1435 | if (location === 'append') {
1436 | destElement.appendChild(element);
1437 | } else if (location === 'prepend') {
1438 | destElement.prepend(element);
1439 | }
1440 | }
1441 |
1442 | // 2025GRID
1443 | //relocateElementBySelector('.pagelist', '#delform', 'append');
1444 | //relocateElementBySelector('.navLinks.json-index', '#delform', 'prepend');
1445 | /**
1446 | * Clone a node, remove the original, and prepend the clone to a target element.
1447 | * @param {string} nodeSelector - The CSS selector of the node to clone and remove.
1448 | * @param {string} targetSelector - The CSS selector of the target element to prepend the clone.
1449 | */
1450 | function cloneAndPrepend(nodeSelector, targetSelector) {
1451 | // Step 1: Select the node you want to clone and remove
1452 | const originalNode = document.querySelector(nodeSelector);
1453 |
1454 | if (!originalNode) {
1455 | console.error('Original node not found');
1456 | return;
1457 | }
1458 |
1459 | // Step 2: Clone the node
1460 | const clonedNode = originalNode.cloneNode(true); // true means a deep clone
1461 |
1462 | // Step 3: Remove the original node
1463 | originalNode.remove();
1464 |
1465 | // Step 4: Select the target element where you want to prepend the cloned node
1466 | const targetElement = document.querySelector(targetSelector);
1467 |
1468 | if (!targetElement) {
1469 | console.error('Target element not found');
1470 | return;
1471 | }
1472 |
1473 | // Step 5: Prepend the cloned node to the target element
1474 | targetElement.prepend(clonedNode);
1475 | }
1476 |
1477 | // 2025GRID
1478 | //cloneAndPrepend('.boardBanner', '#delform');
1479 |
1480 | function OPAsBanner() {
1481 | ready(".thread > .opContainer > .op > .file .fileThumb", (element) => {
1482 | let _this = element,
1483 | banner = $(".boardBanner");
1484 | let OpFullFile = _this.href;
1485 | if (OpFullFile.endsWith("m") || OpFullFile.endsWith("4")) {
1486 | //comment start
1487 | /*
1488 | let OpVideo = document.createElement("video");
1489 | OpVideo.classList.add("ss21--op-banner");
1490 | OpVideo.loop = true;
1491 | OpVideo.src = OpFullFile;
1492 | let playPromise = OpVideo.play();
1493 | if (playPromise !== undefined) {
1494 | playPromise.then((_) => {}).catch((error) => {});
1495 | }
1496 | OpVideo.muted = true;
1497 | banner.appendChild(OpVideo);
1498 | //comment end
1499 | */
1500 | const OpVideo = document.createElement("video");
1501 | OpVideo.classList.add("ss21--op-banner");
1502 | OpVideo.loop = true;
1503 | OpVideo.src = OpFullFile;
1504 | OpVideo.muted = true;
1505 | banner.appendChild(OpVideo);
1506 |
1507 | const playPromise = OpVideo.play();
1508 | if (playPromise !== undefined) {
1509 | playPromise.then(() => {
1510 | console.log("Video is playing");
1511 | }).catch((error) => {
1512 | console.error("Error playing video:", error);
1513 | });
1514 | }
1515 | } else {
1516 | let OpImage = new Image();
1517 | OpImage.classList.add("ss21--op-banner");
1518 | OpImage.src = OpFullFile;
1519 | banner.appendChild(OpImage);
1520 | }
1521 | });
1522 | }
1523 |
1524 | if (config === "thread") {
1525 | OPAsBanner();
1526 | }
1527 |
1528 | /*
1529 | async function OPAsBanner() {
1530 | // Wait for the ".op .fileThumb" element to be ready
1531 | ready(".op .fileThumb", async (element) => {
1532 | const banner = document.querySelector(".boardBanner");
1533 | const OpFullFile = element.href;
1534 |
1535 | // If the file is a video
1536 | if (OpFullFile.endsWith("m")) {
1537 | const OpVideo = document.createElement("video");
1538 | OpVideo.classList.add("ss21--op-banner");
1539 | OpVideo.loop = true;
1540 | OpVideo.src = OpFullFile;
1541 | OpVideo.muted = true;
1542 | banner.appendChild(OpVideo);
1543 |
1544 | try {
1545 | await OpVideo.play(); // Wait for the video to start playing
1546 | console.log("Video is playing");
1547 | } catch (error) {
1548 | console.error("Error playing video:", error);
1549 | }
1550 |
1551 | } else { // If the file is an image
1552 | const OpImage = new Image();
1553 | OpImage.classList.add("ss21--op-banner");
1554 | OpImage.src = OpFullFile;
1555 |
1556 | // Create a promise that resolves when the image has loaded
1557 | await new Promise((resolve, reject) => {
1558 | OpImage.onload = resolve;
1559 | OpImage.onerror = reject;
1560 | });
1561 |
1562 | banner.appendChild(OpImage);
1563 | console.log("Image loaded and appended to banner");
1564 | }
1565 | });
1566 | }
1567 |
1568 | if (config === "thread") {
1569 | OPAsBanner();
1570 | }
1571 | */
1572 | /**
1573 | * Wrap the contents of the specified node inside a new div.
1574 | * @param {string} selector - The CSS selector of the node to wrap.
1575 | */
1576 | function wrapNodeContents(selector) {
1577 | const node = document.querySelector(selector);
1578 |
1579 | if (!node) {
1580 | console.error('Node not found');
1581 | return;
1582 | }
1583 |
1584 | // Step 2: Create a new wrapper div with a dynamically generated class name
1585 | const wrapper = document.createElement('div');
1586 |
1587 | // Remove leading dot or hash if it's a class or id selector
1588 | let baseClass = selector.replace(/^[.#]/, '');
1589 | wrapper.classList.add(`${baseClass}_inner`);
1590 |
1591 | // Step 3: Move the children of the original node into the new wrapper
1592 | while (node.firstChild) {
1593 | wrapper.appendChild(node.firstChild);
1594 | }
1595 |
1596 | // Step 4: Append the new wrapper to the original node
1597 | node.appendChild(wrapper);
1598 | }
1599 | // 2025GRID
1600 | //wrapNodeContents('.navLinks');
1601 | //wrapNodeContents('#header-bar');
1602 | //wrapNodeContents('#thread-watcher');
1603 |
1604 | // Function to extract the initial number and update the data attribute
1605 | if (config === "index") {
1606 | function updateHiddenCount(element) {
1607 | if (!element) {
1608 | return false;
1609 | }
1610 | const text = element.textContent;
1611 | const match = text.match(/(\d+)/);
1612 | if (match) {
1613 | const count = parseInt(match[1], 10);
1614 | document.querySelector('#hidden-toggle > a').dataset.hiddenCount = count;
1615 | } else {
1616 | document.querySelector('#hidden-toggle > a').dataset.hiddenCount = 0; // Default to 0 if no match
1617 | }
1618 | }
1619 |
1620 | // Initial setup
1621 | const hiddenCountElement = document.getElementById('hidden-count');
1622 | updateHiddenCount(hiddenCountElement);
1623 |
1624 | // Create a MutationObserver to watch for changes to the element's text content
1625 | const observer = new MutationObserver((mutationsList) => {
1626 | for (const mutation of mutationsList) {
1627 | if (mutation.type === 'childList' || mutation.type === 'characterData') {
1628 | updateHiddenCount(hiddenCountElement);
1629 | }
1630 | }
1631 | });
1632 |
1633 | document.querySelector('#hidden-toggle > a').onclick = function(e) {
1634 | e.target.classList.toggle('hidden-view-toggle');
1635 | };
1636 | document.querySelector('#hidden-toggle > a').title = "Toggle hidden threads";
1637 |
1638 | // Observe changes to the element's text content
1639 | observer.observe(hiddenCountElement, { childList: true, characterData: true, subtree: true });
1640 | }
1641 |
1642 | doc.classList.add("sidedish-enabled");
1643 |
1644 | // Adds a discernable class to `html` when 4chan sounds player is enabled
1645 | ready("#sound-player-css", (element) => {
1646 | doc.classList.add('fcsp-enabled');
1647 | });
1648 |
1649 | ready("#StyleChanLink", (element) => {
1650 | doc.classList.add('stylechan-enabled');
1651 | $("#ch4SS", document.head).remove();
1652 | $("#fourchanx-bgcolor-css", document.head).remove();
1653 | });
1654 |
1655 | ready("#mascot", (element) => {
1656 | // in theory, this means the user has oneechan enabled
1657 | console.log("%cSilly goose, you left OneeChan on.", "color:red;");
1658 | function backupStyleRemoval(sel) {
1659 | if (sel) {
1660 | console.log("%css21 sidedish is removing this stylesheet: ","color:green;",sel);
1661 | sel.remove();
1662 | return true;
1663 | } else {
1664 | console.log("%css21 sidedish was unable to find: ","color:red;",sel);
1665 | return false;
1666 | }
1667 | }
1668 | backupStyleRemoval($("#ch4SS"));
1669 | backupStyleRemoval($("#fourchanx-bgcolor-css"));
1670 | if (element) {
1671 | make({
1672 | el: "aside",
1673 | cl4ss: "fcx-announcement warning",
1674 | html: `ss21 is not compatible with OneeChan; please disable it to continue using ss21 as intended.`,
1675 | appendTo: "body",
1676 | });
1677 | }
1678 | console.timeLog("Running init() from sidedish");
1679 | });
1680 | }
1681 |
1682 | on(d, "4chanXInitFinished", init);
1683 |
1684 | if (window.location.host.split('.')[0] === 'find') {
1685 | doc.classList.remove("site-loading");
1686 | doc.classList.add("sidedish-enabled");
1687 | doc.classList.add("is-search");
1688 | let currentSearch = window.location.href;//window.location.search;
1689 | document.addEventListener('DOMContentLoaded', (event) => {
1690 | function swapInfo() {
1691 | let ops = $$(".op");
1692 | for (let op of ops) {
1693 | let opPostInfo = $(".postInfo", op);
1694 | op.prepend(opPostInfo);
1695 | op.classList.add("post--file-swapped");
1696 | }
1697 | }
1698 | swapInfo();
1699 | function fitText(el) {
1700 | // el.style.fontSize = Math.max(Math.min(el.clientWidth / (compressor*10), parseFloat(settings.maxFontSize)), parseFloat(settings.minFontSize)) + 'px';
1701 | el.style.fontSize = Math.max(Math.min(el.clientWidth / 10, parseFloat(1/0)), parseFloat(-1/0)) + 'px';
1702 | el.style.setProperty("--length", el.innerText.length);
1703 | }
1704 |
1705 | fitText($('.boardTitle'));
1706 | make({
1707 | el: "aside",
1708 | cl4ss: "fcx-announcement warning",
1709 | html: `4chan X doesn't work on the find subdomain, though ss21 tries to style it.`,
1710 | appendTo: "body",
1711 | });
1712 | function pageCurrent() {
1713 | let pagelists = $$('.pagelist.desktop .pages a');
1714 | let firstPageStrong = null;
1715 | let matched = false;
1716 | pagelists.forEach((pagelist, index) => {
1717 | let parentStrong = pagelist.parentNode;
1718 | parentStrong.classList.remove('current-page');
1719 | pagelist.textContent = pagelist.textContent.trim();
1720 | if (index === 0) {
1721 | firstPageStrong = parentStrong;
1722 | }
1723 | if (pagelist.href === currentSearch) {
1724 | parentStrong.classList.add('current-page');
1725 | matched = true;
1726 | }
1727 | });
1728 | if (!matched && firstPageStrong) {
1729 | firstPageStrong.classList.add('current-page');
1730 | }
1731 | }
1732 | pageCurrent();
1733 | })
1734 | }
1735 | //on(d, "PlayerEvent", removeStyle($("#sound-player-css", d.head)));
1736 | /*
1737 | function backup() {
1738 | doc.classList.remove('site-loading');
1739 | doc.classList.add('no-fourchan-x');
1740 | on(d, "4chanXInitFinished", doc.classList.remove('no-fourchan-x'));
1741 | }
1742 |
1743 | on(d, 'DOMContentLoaded', backup);
1744 | */
1745 | ready(".custom-menu-ctrl", (element) => {
1746 | //doc.classList.remove('site-loading');
1747 | //doc.classList.add('fourchan-ext');
1748 | init();
1749 | });
1750 |
1751 | on(d, '4chanMainInit', function() {
1752 | //doc.classList.remove('site-loading');
1753 | // doc.classList.add('fourchan-ext');
1754 | function removeStyle(sel) {
1755 | if (sel) {
1756 | console.log(
1757 | "%css21 sidedish is removing this stylesheet: ",
1758 | "color:green;",
1759 | sel
1760 | );
1761 | sel.remove();
1762 | return true;
1763 | } else {
1764 | console.log("%css21 sidedish was unable to find: ", "color:red;", sel);
1765 | return false;
1766 | }
1767 | }
1768 | removeStyle($("style[type]", d.head)); // this removes the inline mobile css
1769 | on(d, 'DOMContentLoaded', replace4chanFooterList);
1770 | function swapInfo() {
1771 | let ops = $$(".op");
1772 | for (let op of ops) {
1773 | let opPostInfo = $(".postInfo", op);
1774 | op.prepend(opPostInfo);
1775 | op.classList.add("post--file-swapped");
1776 | }
1777 | }
1778 | on(d, 'DOMContentLoaded', swapInfo);
1779 | });
1780 | })();
1781 |
--------------------------------------------------------------------------------