Browse Source

Initial commit.

Syfaro 2 months ago
commit
51fadaee23
40 changed files with 1238 additions and 0 deletions
  1. 1
    0
      .gitignore
  2. 6
    0
      archetypes/default.md
  3. 6
    0
      archetypes/project.md
  4. 10
    0
      config.toml
  5. BIN
      content/blog/engraved-acrylic-led-badges/BadgeBack.jpg
  6. BIN
      content/blog/engraved-acrylic-led-badges/BadgeFinal.jpg
  7. BIN
      content/blog/engraved-acrylic-led-badges/BadgeInternals.jpg
  8. 42
    0
      content/blog/engraved-acrylic-led-badges/index.md
  9. 7
    0
      content/blog/hello-world.md
  10. BIN
      content/blog/led-badges-first-pcb/DoneBoard.jpg
  11. BIN
      content/blog/led-badges-first-pcb/LEDs.jpg
  12. 23
    0
      content/blog/led-badges-first-pcb/index.md
  13. BIN
      content/blog/led-badges-pcb-design/BadgeBoard.png
  14. BIN
      content/blog/led-badges-pcb-design/BoardBottom.jpg
  15. BIN
      content/blog/led-badges-pcb-design/BoardTop.jpg
  16. 90
    0
      content/blog/led-badges-pcb-design/index.md
  17. 49
    0
      content/blog/peppershrike.md
  18. 7
    0
      content/char.md
  19. 6
    0
      content/project/furry-art-multiuploader.md
  20. 6
    0
      content/project/go-telegram-bot-api.md
  21. 6
    0
      content/project/mcapi-us.md
  22. 306
    0
      data/char.json
  23. 14
    0
      data/contact.yaml
  24. 10
    0
      data/others.yaml
  25. 4
    0
      layouts/shortcodes/en_peppershrike.html
  26. 6
    0
      layouts/shortcodes/img.html
  27. 6
    0
      layouts/shortcodes/peppershrike.html
  28. 74
    0
      static/files/syfaro.asc
  29. 1
    0
      static/files/syfaro.pub
  30. BIN
      static/img/icon.png
  31. BIN
      static/img/icon@2x.png
  32. 20
    0
      themes/fox/LICENSE
  33. 2
    0
      themes/fox/archetypes/default.md
  34. 1
    0
      themes/fox/layouts/404.html
  35. 49
    0
      themes/fox/layouts/_default/baseof.html
  36. 11
    0
      themes/fox/layouts/_default/single.html
  37. 22
    0
      themes/fox/layouts/blog/list.html
  38. 67
    0
      themes/fox/layouts/index.html
  39. 379
    0
      themes/fox/static/css/fox.css
  40. 7
    0
      themes/fox/theme.toml

+ 1
- 0
.gitignore View File

@@ -0,0 +1 @@
1
+/public

+ 6
- 0
archetypes/default.md View File

@@ -0,0 +1,6 @@
1
+---
2
+title: "{{ replace .Name "-" " " | title }}"
3
+date: {{ .Date }}
4
+draft: true
5
+---
6
+

+ 6
- 0
archetypes/project.md View File

@@ -0,0 +1,6 @@
1
+---
2
+title: "untitled project"
3
+projecturl: https://syfaro.net
4
+projectshort: the cool thing
5
+homepage: true
6
+---

+ 10
- 0
config.toml View File

@@ -0,0 +1,10 @@
1
+baseURL = "https://syfaro.net"
2
+languageCode = "en-us"
3
+title = "Syfaro"
4
+theme = "fox"
5
+
6
+[params]
7
+  description = "Hi. I'm a purple fox."
8
+  peppershrike = "https://peppershrike.huefox.com"
9
+
10
+[taxonomies]

BIN
content/blog/engraved-acrylic-led-badges/BadgeBack.jpg View File


BIN
content/blog/engraved-acrylic-led-badges/BadgeFinal.jpg View File


BIN
content/blog/engraved-acrylic-led-badges/BadgeInternals.jpg View File


+ 42
- 0
content/blog/engraved-acrylic-led-badges/index.md View File

@@ -0,0 +1,42 @@
1
+---
2
+title: "Engraved Acrylic LED Badges"
3
+date: 2018-05-16T18:00:00-05:00
4
+draft: false
5
+---
6
+
7
+Hi all, I'm writing this as an update for what I plan to happen regarding the LED badges.
8
+
9
+Based on the experience Rynwar and I had with them at BLFC, there's a huge demand for something like these. In attempting to research what other people have done, I've run across a few other similar things but nothing quite as advanced in terms of color patterns and brightness. There are a number of people who print art onto acrylic or have laser engraved acrylic using art provided by the client. I have not found anyone else using RGB LEDs to create animated effects or ones that can be recharged instead of requiring replaceable batteries. From BLFC, they seem to last for about twelve hours on a single charge on the lower brightness mode. The final product likely would contain a larger battery for even longer battery life.
10
+
11
+So far one artist has brought up the possibility of partnering to create artwork for the badges. I'd definitely like to pursue something like that instead of having to deal with the client providing artwork which may not be ideal for the engraving or they may not have permission to use.
12
+
13
+Looking around has provided me with interesting ideas for dual layer acrylic which allows for multiple colors at once but I'm not sure how feasible this is with my current design. I believe it would be a very cool effect to get dual color artwork or a name that could flash independently of the artwork. In continuing to improve the features I'm also evaluating whether or not sound reactive patterns are possible (and it currently does seem likely I will be able to add reactive effects).
14
+
15
+If you're not already familiar with what they look like, here's a few photos.
16
+
17
+{{<img "BadgeFinal.jpg">}}
18
+{{<img "BadgeBack.jpg">}}
19
+
20
+I'd love to get some feedback on what people would be comfortable spending on something like this. If you wouldn't mind filling out this quick question about it, I'd really appreciate it.
21
+
22
+{{< peppershrike 5 >}}
23
+
24
+There's a number of issues with the current revision such as poor user interface (a single switch that controls mode and brightness), a large and clearly 3D printed case, and general imperfections in the acrylic (it was cut quickly on a table saw).
25
+
26
+Moving forward, there's a number of refinements that must be reached before they could be sold. I have to figure out a new interface that allows enough configuration without being uncomfortable to use, how to cut and engrave the acrylic without imperfections, and generally improve the reliability and sturdiness of it. Hot gluing the acrylic in place worked well enough for a weekend but it does not feel sturdy. Even with being careful with them, the acrylic was covered in micro-scratches from the weekend. Although these scratches are not visible unless looking at the right angle, evaluating some kind of protective coating seems worthwhile.
27
+
28
+The internals must also be significantly improved before I could manufacture them at any kind of reasonable rate. Currently, there are a number of hand soldered components pressure fit into place combined with off the shelf boards I already had. This means the space isn't used as efficiently as possible and the wires are potential points of stress and failure. I've been looking into a PCB design which will allow for more advanced features such as a microphone for sound reactive effects and better charging indicators. After finishing this design and sourcing the required components, I'll be able to get a better idea of how much each one of these costs to produce and therefore be able to determine how much they will be sold for.
29
+
30
+{{<img "BadgeInternals.jpg">}}
31
+
32
+I'm hoping I'll be able to figure out all these issues within a few months. Once I have working prototypes for a more refined product, I'll open preorders but I cannot guarantee a date for this yet.
33
+
34
+tl;dr,
35
+
36
+* People seem to want these
37
+* I'm going to look into making them for people
38
+* There's a number of issues I need to figure out first
39
+* I don't know what they cost me yet or what I'm going to charge for them
40
+* I'm hoping to do preorders in a few months assuming everything works out
41
+
42
+{{< en_peppershrike >}}

+ 7
- 0
content/blog/hello-world.md View File

@@ -0,0 +1,7 @@
1
+---
2
+title: "Hello, world!"
3
+date: 2018-05-16T12:00:00-05:00
4
+draft: false
5
+---
6
+
7
+I have a blog now! Maybe I'll actually do some useful things with it.

BIN
content/blog/led-badges-first-pcb/DoneBoard.jpg View File


BIN
content/blog/led-badges-first-pcb/LEDs.jpg View File


+ 23
- 0
content/blog/led-badges-first-pcb/index.md View File

@@ -0,0 +1,23 @@
1
+---
2
+title: "LED Badges — First PCB"
3
+date: 2018-06-12T20:00:00-05:00
4
+draft: false
5
+---
6
+
7
+I finished creating the first PCB for the prototypes and it seems to mostly work.
8
+
9
+As of right now I'm still having issues with charging through the Micro USB port, I believe something is wired incorrectly. Additionally it seems to discharge the battery overnight, suggesting current is still running somewhere it shouldn't be while powered off.
10
+
11
+{{<img "DoneBoard.jpg" "PCB with components soldered on">}}
12
+
13
+While the soldering job isn't very pretty, it does seem to do the job. You can also see the holes in the board are shifted slightly. That was due to me not properly aligning the board when engraving it.
14
+
15
+{{<img "LEDs.jpg" "It's incredibly bright">}}
16
+
17
+When evaluating the batteries I got previously, it seems like they only store around 250mAh instead of the advertised 350mAh. While this isn't great, it's not a downgrade from the 240mAh batteries I was using before. I'm going to continue evaluating and see if the one I tested was defective, if my battery charger just isn't that accurate, or if the batteries really are that much lower capacity than advertised.
18
+
19
+In order to properly test it, I need to 3D print the case for them. While the board was designed to make it easy, it will still take some work to find the smallest possible design that still can easily hold everything. It is designed so that the switch will be directly exposed, but the buttons will have a printed part covering them.
20
+
21
+I also need to figure out how to design the case to most securely hold the acrylic. Hot glue was good for a prototype, but after sitting in my backpack on the flight home, it detached itself.
22
+
23
+Next up: resolving circuit issues and designing a 3D printable case.

BIN
content/blog/led-badges-pcb-design/BadgeBoard.png View File


BIN
content/blog/led-badges-pcb-design/BoardBottom.jpg View File


BIN
content/blog/led-badges-pcb-design/BoardTop.jpg View File


+ 90
- 0
content/blog/led-badges-pcb-design/index.md View File

@@ -0,0 +1,90 @@
1
+---
2
+title: "LED Badges — PCB design"
3
+date: 2018-05-17T20:00:00-05:00
4
+draft: false
5
+---
6
+
7
+I've been attempting to design my own PCBs for the badges.
8
+
9
+Using the same machine I engrave the acrylic with, I can engrave copper boards to create traces and drill holes. It seems to struggle with 10mil traces but the 20mil traces pictured below all look fully intact.
10
+
11
+{{<img "BoardTop.jpg">}}
12
+{{<img "BoardBottom.jpg">}}
13
+
14
+Now that I have boards that seem like they should work, I need to order the parts. My current part list includes:
15
+
16
+* ATTINY85-20SU &mdash; the main controller (might be possible to use an ATtiny45 for cost saving, there's enough RAM and storage if I don't add any sound reactive features)
17
+* MCP73831T-2ATI/OT &mdash; charging regulator for the lithium battery
18
+* 4.7µF 0805 capacitor &mdash; decoupling USB power in for charger
19
+* 4.99kΩ 0805 resistor &mdash; program charging regulator to 200mA
20
+* Micro USB female connector &mdash; provide power to the charging regulator
21
+* JST-PH 2 pin right angle connector &mdash; solderless battery connection
22
+* 350mAh 652030 lithium polymer battery &mdash; the battery to power it
23
+
24
+I already have the pushbutton and toggle switches from previous projects.
25
+
26
+I also need to get a SOIC socket so I can program the ATtinys as the boards don't have space for programming headers.
27
+
28
+<table>
29
+    <thead>
30
+        <tr>
31
+            <th>Component</th>
32
+            <th>Count</th>
33
+            <th>Price</th>
34
+        </tr>
35
+    </thead>
36
+    <tbody>
37
+        <tr>
38
+            <th>ATtiny85-20SU</th>
39
+            <td>15</td>
40
+            <td>$16.93</td>
41
+        </tr>
42
+        <tr>
43
+            <th>MCP73831T-2ATI/OT</th>
44
+            <td>10</td>
45
+            <td>$5.21</td>
46
+        </tr>
47
+        <tr>
48
+            <th>652030 350mAh battery</th>
49
+            <td>2</td>
50
+            <td>$11.98</td>
51
+        </tr>
52
+        <tr>
53
+            <th>4.7µF capacitor</th>
54
+            <td>25</td>
55
+            <td>$1.24</td>
56
+        </tr>
57
+        <tr>
58
+            <th>4.99kΩ resistor</th>
59
+            <td>250</td>
60
+            <td>$1.60</td>
61
+        </tr>
62
+        <tr>
63
+            <th>Micro USB connector</th>
64
+            <td>10</td>
65
+            <td>$5.79</td>
66
+        </tr>
67
+        <tr>
68
+            <th>JST-PH 2-pin connector</th>
69
+            <td>10</td>
70
+            <td>$6.80</td>
71
+        </tr>
72
+        <tr>
73
+            <th>SOIC socket</th>
74
+            <td>1</td>
75
+            <td>$7.98</td>
76
+        </tr>
77
+    </tbody>
78
+</table>
79
+
80
+**Total: $57.53** (before shipping and tax)
81
+
82
+{{<img "BadgeBoard.png">}}
83
+
84
+After getting the parts, I can evaluate how difficult everything is to hand solder. If I can't reliably make good connections, I'll have to look into hot air rework stations, solder paste, and solder masks. With those tools I could place everything and use the hot air to solder parts together instead of having to manually align and apply solder to each tiny pad. However, they can be expensive and difficult to get correct.
85
+
86
+In addition to board design, some cheap electret microphone and amplifier boards I ordered arrived today. I'm using them to experiment with sound reactive features. I've started working with some example code to get a feel for how well they work. From the little time I've played with them, it feels more like a stretch goal rather than a core feature.
87
+
88
+The components were purchased from Amazon, Arrow, and Adafruit. Most items are expected to arrive by Monday, May 21st. However, the JST connectors from Adafruit may take longer but they are not essential to prototyping.
89
+
90
+Next up: waiting for the components to arrive and assembling a test board.

+ 49
- 0
content/blog/peppershrike.md View File

@@ -0,0 +1,49 @@
1
+---
2
+title: "Peppershrike"
3
+date: 2018-05-19T12:00:00-05:00
4
+draft: false
5
+---
6
+
7
+At times, it's useful to get information from people reading a blog post. However, requiring users to visit another site, potentially deal with advertisements or creating accounts, or other annoyances greatly drives down the number of people willing to answer a quick question.
8
+
9
+In an attempt to make it easier for users to quickly respond, I've created a small web app called Peppershrike.
10
+
11
+Here's an example of how it works:
12
+
13
+{{<peppershrike 1>}}
14
+
15
+It's incredibly quick and easy to use and doesn't require users to visit any other sites or fill out any other information. It's easily themeable to fit into any site. And it's [free and open source](https://git.huefox.com/syfaro/peppershrike) software!
16
+
17
+All you have to do is create a `div` to contain the survey and include a small JavaScript snippet. Here's an example, using the same code for the survey above.
18
+
19
+{{<highlight html>}}
20
+<div class="peppershrike" data-id="1"></div>
21
+
22
+<script src="https://peppershrike.huefox.com/peppershrike.js" data-host="https://peppershrike.huefox.com"></script>
23
+<script>
24
+    Peppershrike.find();
25
+</script>
26
+{{</highlight>}}
27
+
28
+There's an example theme for how to style it in the [git repo](https://git.huefox.com/syfaro/peppershrike/src/branch/master/themes/syfaro.css). I'll hopefully be adding a few more default themes to make it fit in other places better without extra work.
29
+
30
+It's also possible to add other types of questions, such as ones that will only accept numeric input.
31
+
32
+{{<peppershrike 2>}}
33
+
34
+Or if you have specific data or want to make it easier for the user, there's even a multiple choice type.
35
+
36
+{{<peppershrike 3>}}
37
+
38
+It creates a fairly simple web interface to add surveys and manage responses. Future versions will contain more types of questions and potentially things like graphs of multiple choice responses.
39
+
40
+I'd love to hear what you think about it or if you have any suggestions for new features! Of course, here's a simple form through it to answer this. It's also there to show off you don't need to include a description, only a title.
41
+
42
+{{<peppershrike 4>}}
43
+
44
+If you're curious about the name, I mostly use bird species to title my projects. Naming things is difficult!
45
+
46
+<script src="https://peppershrike.huefox.com/peppershrike.js" data-host="https://peppershrike.huefox.com"></script>
47
+<script>
48
+    Peppershrike.find();
49
+</script>

+ 7
- 0
content/char.md View File

@@ -0,0 +1,7 @@
1
+---
2
+title: "Character Reference"
3
+date: 2018-10-07T00:12:26-05:00
4
+draft: true
5
+---
6
+
7
+### Returning shortly.

+ 6
- 0
content/project/furry-art-multiuploader.md View File

@@ -0,0 +1,6 @@
1
+---
2
+title: "Furry Art Multiuploader"
3
+projecturl: https://multiupload.us
4
+projectshort: A tool that allows artists to upload to multiple sites at once instead of having to upload the same thing on many different sites.
5
+homepage: true
6
+---

+ 6
- 0
content/project/go-telegram-bot-api.md View File

@@ -0,0 +1,6 @@
1
+---
2
+title: "go-telegram-bot-api"
3
+projecturl: https://github.com/go-telegram-bot-api/telegram-bot-api
4
+projectshort: A golang wrapper for the Telegram Bot API.
5
+homepage: true
6
+---

+ 6
- 0
content/project/mcapi-us.md View File

@@ -0,0 +1,6 @@
1
+---
2
+title: "MCApi.us"
3
+projecturl: https://mcapi.us/
4
+projectshort: An API to get the status of or query a Minecraft server.
5
+homepage: true
6
+---

+ 306
- 0
data/char.json View File

@@ -0,0 +1,306 @@
1
+{
2
+    "artists": {
3
+        "KosseHyena": {
4
+            "link": "https://twitter.com/KosseHyena"
5
+        },
6
+        "Tsaiwolf": {
7
+            "link": "https://www.furaffinity.net/user/tsaiwolf"
8
+        },
9
+        "Growlbeast": {
10
+            "link": "https://twitter.com/Growlbeast"
11
+        },
12
+        "Thrushes": {
13
+            "link": "https://www.furaffinity.net/user/thrushes/"
14
+        },
15
+        "oCe": {
16
+            "link": "https://www.furaffinity.net/user/oce/"
17
+        },
18
+        "crepusculecat": {
19
+            "link": "https://twitter.com/crepusculecat"
20
+        },
21
+        "kelevtov": {
22
+            "link": "https://www.furaffinity.net/user/kelevtov."
23
+        },
24
+        "pig": {
25
+            "link": "https://www.furaffinity.net/user/pig"
26
+        },
27
+        "Nameless_Coyote": {
28
+            "link": "https://twitter.com/Nameless_Coyote"
29
+        },
30
+        "Psychonautic": {
31
+            "link": "https://www.furaffinity.net/user/psychonautic/"
32
+        },
33
+        "Mithmeoi": {
34
+            "link": "https://twitter.com/Mithmeoi"
35
+        },
36
+        "Yuniwolfsky": {
37
+            "link": "https://www.furaffinity.net/user/yuniwolfsky"
38
+        },
39
+        "LydiaPaige": {
40
+            "link": "https://twitter.com/Lydiarts"
41
+        },
42
+        "casparr": {
43
+            "link": "https://www.furaffinity.net/user/casparr/"
44
+        },
45
+        "casual-dhole": {
46
+            "link": "https://www.weasyl.com/~casual-dhole"
47
+        },
48
+        "Paws": {
49
+            "link": "https://www.furaffinity.net/user/paws/"
50
+        },
51
+        "SuncatArt": {
52
+            "link": "https://twitter.com/SuncatArt"
53
+        },
54
+        "wryote": {
55
+            "link": "https://twitter.com/wryote"
56
+        },
57
+        "lilyote": {
58
+            "link": "https://www.deviantart.com/lilyote"
59
+        },
60
+        "PaintlessDog": {
61
+            "link": "https://twitter.com/PaintlessDog"
62
+        },
63
+        "birbdog": {
64
+            "link": "https://twitter.com/birbdog"
65
+        },
66
+        "lostshade": {
67
+            "link": "https://www.furaffinity.net/user/lostshade/"
68
+        },
69
+        "puppytube": {
70
+            "link": "https://twitter.com/puppytube"
71
+        },
72
+        "VermStudio": {
73
+            "link": "https://twitter.com/VermStudio"
74
+        },
75
+        "Kavaeric": {
76
+            "link": "https://www.weasyl.com/~kavaeric"
77
+        },
78
+        "Sirod": {
79
+            "link": "https://twitter.com/5irod"
80
+        },
81
+        "dominate": {
82
+            "link": "https://www.furaffinity.net/user/dominate/"
83
+        },
84
+        "KojiFox": {
85
+            "link": "https://twitter.com/KojiFox"
86
+        },
87
+        "TheShoujoPrince": {
88
+            "link": "https://twitter.com/TheShoujoPrince"
89
+        },
90
+        "Saosin": {
91
+            "link": "https://www.furaffinity.net/user/Jawbones"
92
+        },
93
+        "OrlandoFox": {
94
+            "link": "https://www.furaffinity.net/user/thedoggygal"
95
+        },
96
+        "InuHein": {
97
+            "link": "https://twitter.com/inuHein"
98
+        },
99
+        "Skdaffle": {
100
+            "link": "http://skdaffle.art/"
101
+        }
102
+    },
103
+    "artwork": [
104
+        {
105
+            "artist": "Skdaffle",
106
+            "link": "https://www.furaffinity.net/view/28105329",
107
+            "filename": "syfarocomm.png",
108
+            "message": "nature is beautiful",
109
+            "nsfw": true
110
+        },
111
+        {
112
+            "artist": "Tsaiwolf",
113
+            "link": "https://www.furaffinity.net/view/28093358/",
114
+            "filename": "Tsaiwolf2018-SyfaroMultifox-LR.png",
115
+            "message": "A beautiful gift from Tsaiwolf!",
116
+            "nsfw": true
117
+        }, {
118
+            "artist": "KosseHyena",
119
+            "link": "https://twitter.com/KosseHyena/status/1002216973823086592",
120
+            "filename": "experimental-syfaro_sm.png"
121
+        }, {
122
+            "artist": "Growlbeast",
123
+            "link": "https://twitter.com/Growlbeast/status/871995975375650817",
124
+            "filename": "syfaro_sketch_pinup.png",
125
+            "nsfw": true
126
+        }, {
127
+            "artist": "Thrushes",
128
+            "link": "https://www.furaffinity.net/view/21371763/",
129
+            "filename": "syfaro.png",
130
+            "message": "Foxes do lots of things!"
131
+        }, {
132
+            "artist": "oCe",
133
+            "link": "https://www.furaffinity.net/view/20449854/",
134
+            "filename": "syfaro-sketch-web.jpg",
135
+            "message": "Mmmmm grapes, a great source of purple"
136
+        }, {
137
+            "artist": "crepusculecat",
138
+            "filename": "syfaro.png",
139
+            "message": "Isn't my boyfriend cute? :3"
140
+        }, {
141
+            "artist": "kelevtov",
142
+            "filename": "syfaro_sketchcommission1edit.png",
143
+            "nsfw": true
144
+        }, {
145
+            "artist": "kelevtov",
146
+            "link": "https://www.furaffinity.net/view/20201962/",
147
+            "filename": "syfaro_sketchcommission2edit.png",
148
+            "message": "Who wouldn't love to be tied up for public use~",
149
+            "nsfw": true
150
+        }, {
151
+            "artist": "pig",
152
+            "filename": "doodle3.png",
153
+            "message": "A fox in their natural state",
154
+            "nsfw": true
155
+        }, {
156
+            "artist": "pig",
157
+            "link": "https://www.furaffinity.net/view/19787399/",
158
+            "filename": "public.png",
159
+            "message": "How unusual, a fox that isn't in the middle",
160
+            "nsfw": true
161
+        }, {
162
+            "artist": "Nameless_Coyote",
163
+            "filename": "aghjkjhgfdssdg_by_sweetwolf1-d9ywl1h.png",
164
+            "message": "Pixels!"
165
+        }, {
166
+            "artist": "Psychonautic",
167
+            "link": "https://www.furaffinity.net/view/19620670/",
168
+            "filename": "Syfaro.png",
169
+            "message": "Creative liberty is neat and lots of purple is lovely"
170
+        }, {
171
+            "artist": "Mithmeoi",
172
+            "link": "https://twitter.com/Mithmeoi/status/713601307056017408",
173
+            "filename": "IMG_014.png",
174
+            "message": ":D"
175
+        }, {
176
+            "artist": "Yuniwolfsky",
177
+            "link": "https://www.furaffinity.net/view/18832106/",
178
+            "filename": "1453171632.yuniwolfsky_nican_fetish_sheet.png",
179
+            "message": "What aren't foxes into?",
180
+            "nsfw": true
181
+        }, {
182
+            "artist": "LydiaPaige",
183
+            "filename": "d4su3TH.png",
184
+            "message": "Bounce, bounce, bounce"
185
+        }, {
186
+            "artist": "casparr",
187
+            "link": "https://www.furaffinity.net/view/18492279/",
188
+            "filename": "tumblr_nyt4dpHbKd1u7i96po1_1280.png",
189
+            "nsfw": true
190
+        }, {
191
+            "artist": "casual-dhole",
192
+            "link": "https://www.weasyl.com/~casualdhole/submissions/1366603/etchings-in-the-ruins",
193
+            "filename": "fylninsyf2_(web).png",
194
+            "message": "Exploring is fun! Ooh bug"
195
+        }, {
196
+            "artist": "Paws",
197
+            "link": "https://www.furaffinity.net/view/14716486/",
198
+            "filename": "1412654852.paws_finchibisyfaro.png"
199
+        }
200
+    ],
201
+    "icons": [
202
+        {
203
+            "artist": "InuHein",
204
+            "filename": "nicanbun3.png"
205
+        },
206
+        {
207
+            "artist": "SuncatArt",
208
+            "filename": "syfaro_500x1000_by_citriel-dbwqgzs.png"
209
+        },
210
+        {
211
+            "artist": "wryote",
212
+            "link": "https://twitter.com/wryote/status/829824956921954308",
213
+            "filename": "purpleblck.png",
214
+            "message": "Resist!"
215
+        },
216
+        {
217
+            "artist": "Growlbeast",
218
+            "link": "https://twitter.com/Growlbeast/status/799036962262892544",
219
+            "filename": "syfarobadgefull.png",
220
+            "message": "Growly face from Growlbeast is <3"
221
+        }, {
222
+            "artist": "lilyote",
223
+            "link": "http://lilyote.deviantart.com/art/headshot-for-syfaro-628673205",
224
+            "filename": "5_copy_by_lilyote-daean4t.png",
225
+            "message": ":P"
226
+        }, {
227
+            "artist": "PaintlessDog",
228
+            "link": "https://twitter.com/PaintlessDog/status/758754257147351040",
229
+            "filename": "Coei7XrVUAEEpph.jpg",
230
+            "message": "Still smells like coffee!"
231
+        }, {
232
+            "artist": "birbdog",
233
+            "link": "https://twitter.com/birbdog/status/752275044840116228",
234
+            "filename": "comforsy.png"
235
+        }, {
236
+            "artist": "lostshade",
237
+            "filename": "1.png"
238
+        }, {
239
+            "artist": "crepusculecat",
240
+            "link": "https://twitter.com/crepusculecat/status/742161098472706048",
241
+            "filename": "paintitntin.png",
242
+            "message": "Glitchy and unusual colors and patterns are fantastic"
243
+        }, {
244
+            "artist": "LydiaPaige",
245
+            "link": "https://twitter.com/Lydiarts/status/653415262482378752",
246
+            "filename": "syfaro.png",
247
+            "message": "Imma purple fox! :D"
248
+        }, {
249
+            "artist": "puppytube",
250
+            "filename": "puppytube-syfaro.png"
251
+        }, {
252
+            "artist": "VermStudio",
253
+            "link": "https://twitter.com/VermStudio/status/639629069114474496",
254
+            "filename": "maw.png"
255
+        }, {
256
+            "artist": "Kavaeric",
257
+            "link": "https://www.weasyl.com/~kavaeric/submissions/1002529/com-headshot-syfaro",
258
+            "filename": "kavaeric-commish-headshot-syfaro.png"
259
+        }, {
260
+            "artist": "Growlbeast",
261
+            "link": "https://twitter.com/growlbeast/status/603283035002273792",
262
+            "filename": "pJI1Rpe.png",
263
+            "message": "Sly fox~"
264
+        }, {
265
+            "artist": "Sirod",
266
+            "link": "https://twitter.com/5irod/status/585877842010902528",
267
+            "filename": "icon.png"
268
+        }, {
269
+            "artist": "dominate",
270
+            "filename": "ss+(2015-03-08+at+08.07.10).png"
271
+        }, {
272
+            "artist": "KojiFox",
273
+            "link": "https://twitter.com/KojiFox/status/555723010397990912",
274
+            "filename": "Syfaro_Minimal_Twitter_500x500_Corrected.png",
275
+            "message": "Minimalism is neat"
276
+        }, {
277
+            "artist": "wryote",
278
+            "link": "https://www.weasyl.com/~kunacoyote/submissions/827857/syfaro-icon-commission",
279
+            "filename": "TkqIgov9.png"
280
+        }, {
281
+            "artist": "TheShoujoPrince",
282
+            "link": "https://twitter.com/TheShoujoPrince/status/540043973369561089",
283
+            "filename": "B36fIcoCAAE-kta.jpg"
284
+        }, {
285
+            "artist": "Saosin",
286
+            "link": "http://www.furryteens.org/forum/index.php?topic=19598.msg450475#msg450475",
287
+            "filename": "Syfaro_zps145ea355.png"
288
+        }, {
289
+            "artist": "OrlandoFox",
290
+            "filename": "vzzkAii.png"
291
+        }, {
292
+            "artist": "dominate",
293
+            "link": "https://twitter.com/BA5ILEUS/status/480205213765091328",
294
+            "filename": "BqoIGK2CcAA6QFM.png"
295
+        }, {
296
+            "artist": "dominate",
297
+            "link": "https://twitter.com/BA5ILEUS/status/469630670310883328",
298
+            "filename": "BoR2mqnIUAAL5hU.png"
299
+        }, {
300
+            "artist": "dominate",
301
+            "link": "https://twitter.com/BA5ILEUS/status/468955025004589056",
302
+            "filename": "BoIQGwFIQAESpvr.png",
303
+            "message": "My first commissioned artwork!!"
304
+        }
305
+    ]
306
+}

+ 14
- 0
data/contact.yaml View File

@@ -0,0 +1,14 @@
1
+- name: Telegram
2
+  link: https://t.me/Syfaro
3
+  display: "@Syfaro"
4
+- name: Twitter
5
+  link: https://twitter.com/Syfaro
6
+  display: "@Syfaro"
7
+- name: Discord
8
+  display: "Syfaro#2129"
9
+- name: Email
10
+  link: "mailto:syfaro@huefox.com"
11
+  display: "syfaro@huefox.com"
12
+- name: Mastodon
13
+  link: https://foxesare.sexy/user/syfaro
14
+  display: "@Syfaro@foxesare.sexy"

+ 10
- 0
data/others.yaml View File

@@ -0,0 +1,10 @@
1
+- name: "ssh public key"
2
+  link: "files/syfaro.pub"
3
+- name: "gpg public key"
4
+  link: "files/syfaro.asc"
5
+- name: "git repos"
6
+  link: "https://git.huefox.com"
7
+  desc: "source code for projects (including this site)"
8
+- name: "ko-fi"
9
+  link: "https://ko-fi.com/syfaro"
10
+  desc: "if you really enjoy something I've done"

+ 4
- 0
layouts/shortcodes/en_peppershrike.html View File

@@ -0,0 +1,4 @@
1
+<script src="https://peppershrike.huefox.com/peppershrike.js" data-host="{{ .Site.Params.peppershrike }}"></script>
2
+<script>
3
+    Peppershrike.find();
4
+</script>

+ 6
- 0
layouts/shortcodes/img.html View File

@@ -0,0 +1,6 @@
1
+{{ $img := $.Page.Resources.GetMatch (.Get 0)}}
2
+
3
+<figure>
4
+	<img src="{{ $img.RelPermalink }}" alt="(.Get 1)" />
5
+	<figcaption>{{ .Get 1 }}</figcaption>
6
+</figure>

+ 6
- 0
layouts/shortcodes/peppershrike.html View File

@@ -0,0 +1,6 @@
1
+{{ if .IsNamedParams }}
2
+    <div class="peppershrike" data-id="{{ .Get "id" }}"></div>
3
+{{ else }}
4
+    <div class="peppershrike" data-id="{{ .Get 0 }}"></div>
5
+{{ end }}
6
+

+ 74
- 0
static/files/syfaro.asc View File

@@ -0,0 +1,74 @@
1
+-----BEGIN PGP PUBLIC KEY BLOCK-----
2
+
3
+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
73
+=sh04
74
+-----END PGP PUBLIC KEY BLOCK-----

+ 1
- 0
static/files/syfaro.pub View File

@@ -0,0 +1 @@
1
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDZu4Qe2mrE1ASqvBZxmpYna1ogIoPhOdNM3mQ+e8sQrEaqnBiorsG2aZkQ/hSkncg6Zpo2FWqeAFzzHO5LOv6yDOusG4G5KWKCehkADmDCwlxLxKz1geTM0ORavNQcORIB1URpq/OL5yZlhhdFe0tlVbaVDtDrAaHM+hDmlgOs8Zh6R9HGOy2E2oUpUESBHzErNVD7qy8W82q4zDo+wXh+vUbhtFYbR3WuGcnlpvozWb+VLxbCSG2vgfarH7jkwYH/ywyR+fh76jbK86LT6qNo03EmXj/hiwj2lcSfIVRH96nMr9FBXvG3qBRBzvwOsQWv4m+9TLlivL10Juy+cxSCrKFcHOiVr93jldMP9TAHyEMtrfKGdsSfva1ckmGazF4CTxBVQw0SFCnroOzpFDX928qQswbDw9Zetgk30IqFZyhuLqijmHw4fKrK1ovSMyA//+UOpHdDKD5xwOqjro1+ETS7IXV+bLn7RpdOc64I44NmYiKdnlK1vbd5XCQEWKVglAlX/g3pV/znAfa//X9bNSauYNElPugZmxQRwY03FXsztqTxJ8vRylxpktnJ8pXVxrFDzydnH9linWzCPo/XhqyF1EuSKPsFBsokwzYkD1SI93CF5Cdo8jeYGjsffyBypwalv6ozQAi6jz1yoPTvIG6Qkv1aGQsTY5Dsgxj9Zw==

BIN
static/img/icon.png View File


BIN
static/img/icon@2x.png View File


+ 20
- 0
themes/fox/LICENSE View File

@@ -0,0 +1,20 @@
1
+The MIT License (MIT)
2
+
3
+Copyright (c) 2018 Syfaro
4
+
5
+Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+this software and associated documentation files (the "Software"), to deal in
7
+the Software without restriction, including without limitation the rights to
8
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+the Software, and to permit persons to whom the Software is furnished to do so,
10
+subject to the following conditions:
11
+
12
+The above copyright notice and this permission notice shall be included in all
13
+copies or substantial portions of the Software.
14
+
15
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+ 2
- 0
themes/fox/archetypes/default.md View File

@@ -0,0 +1,2 @@
1
++++
2
++++

+ 1
- 0
themes/fox/layouts/404.html View File

@@ -0,0 +1 @@
1
+<h1>404</h1>

+ 49
- 0
themes/fox/layouts/_default/baseof.html View File

@@ -0,0 +1,49 @@
1
+<!DOCTYPE html>
2
+<html>
3
+
4
+<head>
5
+    <title>{{ block "title" . }}{{ .Site.Title }}{{ end }}</title>
6
+
7
+    <base href="{{ .Site.BaseURL }}">
8
+
9
+    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/hack-font/3.003/web/hack.css">
10
+    <link rel="stylesheet" href="{{ "css/fox.css" | relURL }}">
11
+
12
+    {{ block "head" . }}{{ end }}
13
+</head>
14
+
15
+<body>
16
+    <header>
17
+        {{ if not .IsHome }}
18
+            {{ if and (eq .Section "blog") .IsPage }}
19
+                <a href="{{ .Section | relURL }}">
20
+            {{ else }}
21
+                <a href="{{ "" | relURL }}">
22
+            {{ end }}
23
+        {{ end }}
24
+
25
+        <picture>
26
+            <source srcset="{{ "img/icon.png" | relURL }} 1x, {{ "img/icon@2x.png" | relURL }} 2x">
27
+            <img src="{{ "img/icon.png" | relURL }}">
28
+        </picture>
29
+
30
+        {{ if not .IsHome }}
31
+        </a>
32
+        {{ end}}
33
+
34
+        {{ if .IsHome }}
35
+            <h1>{{ .Site.Title }}</h1>
36
+            <h2>{{ .Site.Params.description }}</h2>
37
+        {{ end }}
38
+    </header>
39
+
40
+    {{ block "container" . }}{{ end }}
41
+
42
+    <footer>
43
+        {{ block "footer" . }}
44
+            🦊🐾
45
+        {{ end }}
46
+    </footer>
47
+</body>
48
+
49
+</html>

+ 11
- 0
themes/fox/layouts/_default/single.html View File

@@ -0,0 +1,11 @@
1
+{{ define "container" }}
2
+    <div class="container post">
3
+        <article>
4
+            <h2>{{ .Title }}</h2>
5
+
6
+            <section>
7
+                {{ .Content }}
8
+            </section>
9
+        </article>
10
+    </div>
11
+{{ end }}

+ 22
- 0
themes/fox/layouts/blog/list.html View File

@@ -0,0 +1,22 @@
1
+{{ define "container" }}
2
+    <section class="container post">
3
+        <h2>Blog</h2>
4
+
5
+        {{ range (where .Pages "Section" "blog").ByDate.Reverse }}
6
+            <article class="post-preview">
7
+                <section class="post-info">
8
+                    <h3><a href="{{ .RelPermalink }}">{{ .Title }}</a></h3>
9
+                    <h6>Published {{ dateFormat "2006-01-02" .Date }}</h6>
10
+                </section>
11
+
12
+                <section>
13
+                    {{ .Summary }}
14
+                </section>
15
+
16
+                {{ if .Truncated }}
17
+                    <a href="{{ .RelPermalink }}">Read more &hellip;</a>
18
+                {{ end }}
19
+            </article>
20
+        {{ end }}
21
+    </section>
22
+{{ end }}

+ 67
- 0
themes/fox/layouts/index.html View File

@@ -0,0 +1,67 @@
1
+{{ define "container" }}
2
+    <main class="container">
3
+        <section>
4
+            <a href="{{ "char" | relURL }}">Character ref & artwork</a>
5
+        </section>
6
+
7
+        <section class="posts">
8
+            <h3>Recent Blog Posts</h3>
9
+
10
+            <ul>
11
+                {{ range first 3 (where .Pages "Section" "blog").ByDate.Reverse }}
12
+                    <li><a href="{{ .RelPermalink }}">{{ .Title }}</a> &mdash; {{ dateFormat "2006-01-02" .Date }}</li>
13
+                {{ end }}
14
+                <li><a href="{{ "blog" | relURL }}">Read More</a></li>
15
+            </ul>
16
+        </section>
17
+
18
+        <section>
19
+            <h3>Things I Work On</h3>
20
+
21
+            {{ range where (where .Pages ".Params.homepage" true) "Section" "project" }}
22
+                <div class="project">
23
+                    <p class="project-name">
24
+                        <a href="{{ .Params.projecturl }}">{{ .Title }}</a>
25
+                    </p>
26
+
27
+                    <p>
28
+                        {{ .Params.projectshort }}
29
+                    </p>
30
+                </div>
31
+            {{ end }}
32
+        </section>
33
+
34
+        <section id="contact" class="contact">
35
+            <h3>Get In Touch</h3>
36
+
37
+            <table>
38
+                {{ range .Site.Data.contact }}
39
+                    <tr>
40
+                        <td>{{ .name }}</td>
41
+                        <td>
42
+                            {{ if eq .link nil }}
43
+                                {{ .display }}
44
+                            {{ else }}
45
+                                <a href="{{ .link }}">{{ .display }}</a>
46
+                            {{ end }}
47
+                        </td>
48
+                    </tr>
49
+                {{ end }}
50
+            </table>
51
+        </section>
52
+
53
+        <section class="others">
54
+            <h3>Other Things</h3>
55
+
56
+            {{ range .Site.Data.others }}
57
+                <div>
58
+                    <a href="{{ .link }}">{{ .name }}</a>
59
+
60
+                    {{ if ne .desc nil }}
61
+                        &mdash; {{ .desc }}
62
+                    {{ end }}
63
+                </div>
64
+            {{ end }}
65
+        </section>
66
+    </main>
67
+{{ end }}

+ 379
- 0
themes/fox/static/css/fox.css View File

@@ -0,0 +1,379 @@
1
+html {
2
+    height: 100%;
3
+}
4
+
5
+html,
6
+body {
7
+    margin: 0;
8
+    padding: 0;
9
+    background-color: #362b70;
10
+    color: #eadef6;
11
+}
12
+
13
+body {
14
+    font-family: "Hack", monospace;
15
+    font-size: 1.35em;
16
+    line-height: 1.65em;
17
+    text-rendering: optimizeLegibility;
18
+    font-variant-ligatures: no-common-ligatures no-discretionary-ligatures;
19
+    text-align: center;
20
+}
21
+
22
+a,
23
+a:visited,
24
+a:active {
25
+    text-decoration: none;
26
+    color: #02cfff;
27
+    padding-bottom: 2px;
28
+    transition: border-bottom 0.05s ease-in;
29
+    border-bottom: 2px solid transparent;
30
+}
31
+
32
+a:hover {
33
+    border-bottom: 2px solid #02cfff;
34
+}
35
+
36
+header {
37
+    margin-top: 30px;
38
+}
39
+
40
+header img {
41
+    border-radius: 50%;
42
+    border: 5px solid #eadef6;
43
+    transition: border 0.1s ease-in-out;
44
+}
45
+
46
+header a {
47
+    border: none;
48
+}
49
+
50
+header a:hover {
51
+    border: none;
52
+}
53
+
54
+header a:hover img {
55
+    border: 5px solid #02cfff;
56
+}
57
+
58
+article {
59
+    text-align: left;
60
+}
61
+
62
+article h1,
63
+article h2 {
64
+    text-align: center;
65
+}
66
+
67
+section {
68
+    margin-top: 75px;
69
+}
70
+
71
+.post section {
72
+    margin-top: 1em;
73
+}
74
+
75
+.post h6 {
76
+    margin: 0;
77
+    padding: 0;
78
+}
79
+
80
+footer {
81
+    padding: 1em;
82
+
83
+    min-height: 200px;
84
+    display: flex;
85
+    justify-content: center;
86
+    align-items: center;
87
+}
88
+
89
+img {
90
+    display: block;
91
+    margin: 5px auto;
92
+    max-width: 100%;
93
+    border-radius: 5px;
94
+}
95
+
96
+table {
97
+    border-collapse: collapse;
98
+    width: 100%;
99
+    text-align: left;
100
+}
101
+
102
+table th,
103
+table td {
104
+    padding: 5px;
105
+}
106
+
107
+table tbody tr:hover {
108
+    background-color: rgba(5, 5, 5, 0.2);
109
+}
110
+
111
+table tbody tr:not(:last-child) {
112
+    border-bottom: 1px solid lightgray;
113
+}
114
+
115
+code {
116
+    font-family: "Hack", Courier, monospace;
117
+}
118
+
119
+pre code {
120
+    display: block;
121
+    box-sizing: border-box;
122
+    overflow: auto;
123
+
124
+    font-size: 0.8em;
125
+    background-color: rgba(0, 0, 0, 0.1);
126
+
127
+    border-radius: 5px;
128
+    padding: 5px;
129
+}
130
+
131
+figcaption {
132
+    margin-top: -10px;
133
+    padding: 5px 5px 0 5px;
134
+    background-color: rgba(0, 0, 0, 0.25);
135
+    border-radius: 0 0 5px 5px;
136
+    text-align: center;
137
+}
138
+
139
+.container {
140
+    width: 90%;
141
+    max-width: 1200px;
142
+    margin: 0 auto 2em;
143
+}
144
+
145
+.container.post {
146
+    font-family: -apple-system, "Helvetica Neue", "Lucida Sans Unicode", "Lucida Grande", sans-serif;
147
+
148
+    max-width: 800px;
149
+}
150
+
151
+.project-name {
152
+    font-size: 1.2em;
153
+}
154
+
155
+.posts ul {
156
+    list-style: none;
157
+    margin: 0;
158
+    padding: 0;
159
+}
160
+
161
+.contact {
162
+    margin: 0 auto;
163
+    max-width: 425px;
164
+}
165
+
166
+.contact h3 {
167
+    padding-top: 1em;
168
+}
169
+
170
+.contact table {
171
+    width: 100%;
172
+}
173
+
174
+.contact td:first-of-type {
175
+    text-align: left;
176
+}
177
+
178
+.contact td:last-of-type {
179
+    text-align: right;
180
+}
181
+
182
+.others div:not(:last-of-type) {
183
+    margin-bottom: 20px;
184
+}
185
+
186
+.services {
187
+    text-align: left;
188
+}
189
+
190
+.handles {
191
+    text-align: right;
192
+}
193
+
194
+.reference {
195
+    max-width: 800px;
196
+    margin: 0 auto;
197
+}
198
+
199
+.reference p,
200
+.reference ul {
201
+    text-align: left;
202
+}
203
+
204
+.artwork {
205
+    margin-bottom: 3rem;
206
+}
207
+
208
+.artwork a {
209
+    border: 0;
210
+}
211
+
212
+a[data-message]:hover:after {
213
+    z-index: 999;
214
+    font-size: 0.7em;
215
+    content: attr(data-message);
216
+    text-align: center;
217
+    background-color: black;
218
+    color: #eadef6;
219
+    border-radius: 5px;
220
+    border: 2px solid #eadef6;
221
+    padding: 5px;
222
+    width: 300px;
223
+    position: fixed;
224
+    bottom: 20px;
225
+    left: 50%;
226
+    margin-left: -150px;
227
+}
228
+
229
+.nsfw {
230
+    display: none;
231
+}
232
+
233
+.color {
234
+    border-radius: 5px;
235
+    padding: 3px;
236
+}
237
+
238
+.color-dark-purple {
239
+    color: white;
240
+    background-color: #503a92;
241
+}
242
+
243
+.color-light-purple {
244
+    color: white;
245
+    background-color: #6635c7;
246
+}
247
+
248
+.color-blue {
249
+    color: black;
250
+    background-color: #02cfff;
251
+}
252
+
253
+.color-blueberry {
254
+    color: white;
255
+    background-color: #604db6;
256
+}
257
+
258
+.color-gold {
259
+    color: black;
260
+    background-color: #d7a849;
261
+}
262
+
263
+.post-info h3,
264
+.post-info h6 {
265
+    display: inline-block;
266
+}
267
+
268
+.peppershrike {
269
+    width: 100%;
270
+    background-color: #eadef6;
271
+    color: black;
272
+    border-radius: 5px;
273
+    padding: 15px;
274
+    box-sizing: border-box;
275
+}
276
+
277
+.peppershrike-title {
278
+    font-size: 1.2em;
279
+    font-weight: 500;
280
+}
281
+
282
+.peppershrike-input,
283
+.peppershrike-submit {
284
+    font-family: inherit;
285
+    width: 100%;
286
+    padding: 5px;
287
+    border: none;
288
+    border-radius: 5px;
289
+    color: black;
290
+    background-color: #eee;
291
+    transition: background-color 50ms ease-out;
292
+}
293
+
294
+.peppershrike-input:hover,
295
+.peppershrike-submit:hover {
296
+    background-color: #fff;
297
+}
298
+
299
+.peppershrike-input:focus {
300
+    outline: 1px solid black;
301
+    border-radius: 0;
302
+    background-color: #fff;
303
+}
304
+
305
+.peppershrike-input {
306
+    box-sizing: border-box;
307
+}
308
+
309
+.peppershrike-submit {
310
+    display: block;
311
+    max-width: 250px;
312
+    margin: 10px auto 0 auto;
313
+}
314
+
315
+.peppershrike-submit:disabled,
316
+.peppershrike-submit:disabled:hover {
317
+    background-color: #eee;
318
+    color: gray;
319
+}
320
+
321
+.peppershrike-done {
322
+    text-align: center;
323
+}
324
+
325
+@media (min-width: 451px) {
326
+    .reference ul {
327
+        padding: 0;
328
+        margin: 0;
329
+    }
330
+
331
+    .post-info h6 {
332
+        margin-left: 1em;
333
+    }
334
+}
335
+
336
+@media (max-width: 450px) {
337
+    a[data-message]:hover:after {
338
+        display: none;
339
+    }
340
+
341
+    .container {
342
+        margin-bottom: 5vh;
343
+    }
344
+
345
+    .contact .items {
346
+        flex-grow: 0;
347
+    }
348
+
349
+    .contact tr:not(:last-of-type) {
350
+        display: block;
351
+        margin-bottom: 1em;
352
+    }
353
+
354
+    .contact td,
355
+    .contact td:first-of-type,
356
+    .contact td:last-of-type {
357
+        display: block;
358
+        text-align: center;
359
+    }
360
+
361
+    .reference {
362
+        width: 100%;
363
+        padding: 0 2vw;
364
+    }
365
+
366
+    .color {
367
+        padding: 1px 3px;
368
+    }
369
+
370
+    .grid img {
371
+        display: block;
372
+        width: 90%;
373
+        margin: 1vh auto;
374
+    }
375
+
376
+    .grid picture {
377
+        padding: 2vh 0;
378
+    }
379
+}

+ 7
- 0
themes/fox/theme.toml View File

@@ -0,0 +1,7 @@
1
+name = "Fox"
2
+license = "MIT"
3
+homepage = "https://syfaro.net"
4
+
5
+[author]
6
+  name = "Syfaro"
7
+  homepage = "https://syfaro.net"

Loading…
Cancel
Save