jekyll-bear-theme 0.2.3 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +17 -11
- data/assets/images/JBBlog.png +0 -0
- data/assets/images/JBHome.png +0 -0
- data/assets/images/JBLife.png +0 -0
- data/assets/images/JBLongForm.png +0 -0
- data/assets/images/JBPoetry.png +0 -0
- data/assets/style.css +448 -410
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3d03b43a44bb6836f6c5e1e9aa92d850aaf064b9ca8c6e7857554909e6a53dbf
|
4
|
+
data.tar.gz: cf00fe723e7d08808aa0a8e36861262554058004b790db48bc6f7f4fd940aea2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 38550f11d7725953e630b3514e83dc690ace23b525bc1aa528ffe24decb3b61cafa2044d311efb2af920b55b3d0e4ea0367d0ad392ab8373aee90dedf88f41ad
|
7
|
+
data.tar.gz: b533bf95ddb547ff7bc5c14c58046a27abdcf9485eb3d827a66f3e915c18bf28ed23d1713fefaff3c0ac034c8ca431ef35a41ea065a6495e2afe4ca25398f41a
|
data/README.md
CHANGED
@@ -17,6 +17,8 @@ This is a port of it's theme to Jekyll, with some tweaks. So you can use GitHub
|
|
17
17
|
- Gallery view for your images
|
18
18
|
- Code highlighting
|
19
19
|
- **Life in Weeks visualization** - Interactive timeline of your life events
|
20
|
+
- **IBM Plex Mono typography** - Consistent monospace font across all elements
|
21
|
+
- **Pine Forest color palette** - Cool, nature-inspired greens with automatic dark mode
|
20
22
|
|
21
23
|
## Screenshots
|
22
24
|
|
@@ -57,6 +59,21 @@ Or install it yourself as:
|
|
57
59
|
|
58
60
|
$ gem install jekyll-bear-theme
|
59
61
|
|
62
|
+
### Design Philosophy
|
63
|
+
|
64
|
+
jekyllBear now features a **monospace-first design** with IBM Plex Mono typography, creating a technical yet natural aesthetic. The pine forest color palette provides visual tranquility while maintaining excellent readability across light and dark modes, evoking the calm and focus of a peaceful woodland environment.
|
65
|
+
|
66
|
+
### Customization
|
67
|
+
|
68
|
+
The theme's CSS is now highly modular and customizable:
|
69
|
+
|
70
|
+
- **Typography**: Modify `--font-main`, `--font-secondary`, and `--font-monospace` variables
|
71
|
+
- **Spacing**: Use the standardized spacing scale for consistent layouts
|
72
|
+
- **Colors**: All theme colors are centralized in CSS custom properties for easy customization
|
73
|
+
- **Pine Forest Palette**: Cool greens ranging from light pine mist to deep forest shadows
|
74
|
+
- **Glow Effects**: Configurable glow colors via `--glow-color-light` and `--glow-color-medium`
|
75
|
+
- **Layout**: Responsive design with mobile-first approach
|
76
|
+
|
60
77
|
## Usage
|
61
78
|
|
62
79
|
### Basic Setup
|
@@ -121,17 +138,6 @@ Use them as templates for your front matter.
|
|
121
138
|
|
122
139
|
>To test your theme, run `bundle exec jekyll serve` and open your browser at `http://localhost:4000`.
|
123
140
|
|
124
|
-
|
125
|
-
## Recent Updates: Life in Weeks Interactive Carousel
|
126
|
-
|
127
|
-
- The **Life in Weeks** page now features an interactive carousel blockquote above the grid, showing a key event from your life.
|
128
|
-
- Up/down arrows let you cycle through events. The week number, event name, and description are shown, with the week number highlighted.
|
129
|
-
- As you change the quote, the corresponding week in the grid pulses, visually connecting the event to its week.
|
130
|
-
- The quote area has a fixed height and is vertically centered, so the grid never shifts as you browse events.
|
131
|
-
- The grid is fully non-interactive (no tooltips, no pointer/question mark cursor), for a clean and minimal look.
|
132
|
-
- The carousel arrows are styled to match the theme and do not show a highlight on click.
|
133
|
-
- All code is lean and efficient: no extra network requests, no heavy JS, and all data is embedded at build time for instant loading.
|
134
|
-
|
135
141
|
See `life.md`, `_layouts/life-in-weeks.html`, and `assets/life-carousel.js` for implementation details.
|
136
142
|
|
137
143
|
## Contributing
|
data/assets/images/JBBlog.png
CHANGED
Binary file
|
data/assets/images/JBHome.png
CHANGED
Binary file
|
data/assets/images/JBLife.png
CHANGED
Binary file
|
Binary file
|
data/assets/images/JBPoetry.png
CHANGED
Binary file
|
data/assets/style.css
CHANGED
@@ -1,175 +1,94 @@
|
|
1
|
-
/*
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
/* Pulse effect for carousel-selected week */
|
8
|
-
.carousel-pulse {
|
9
|
-
animation: carousel-pulse 1.2s cubic-bezier(0.4,0,0.6,1) infinite;
|
10
|
-
border-width: 2px !important;
|
11
|
-
border-color: var(--link-color) !important;
|
12
|
-
box-shadow: 0 0 10px rgba(124, 64, 17, 0.5);
|
13
|
-
z-index: 2;
|
14
|
-
}
|
1
|
+
/* =============================================================================
|
2
|
+
JEKYLL BEAR THEME - PINE FOREST AESTHETIC
|
3
|
+
============================================================================= */
|
4
|
+
/* =============================================================================
|
5
|
+
FONTS & IMPORTS
|
6
|
+
============================================================================= */
|
15
7
|
|
16
|
-
@
|
17
|
-
0% {
|
18
|
-
transform: scale(1);
|
19
|
-
opacity: 1;
|
20
|
-
}
|
21
|
-
50% {
|
22
|
-
transform: scale(1.18);
|
23
|
-
opacity: 0.7;
|
24
|
-
}
|
25
|
-
100% {
|
26
|
-
transform: scale(1);
|
27
|
-
opacity: 1;
|
28
|
-
}
|
29
|
-
}
|
30
|
-
/* Carousel arrow button styles */
|
31
|
-
#life-carousel-up, #life-carousel-down {
|
32
|
-
background: none;
|
33
|
-
border: none;
|
34
|
-
cursor: pointer;
|
35
|
-
font-size: 1.5em;
|
36
|
-
line-height: 1;
|
37
|
-
padding: 0.2em;
|
38
|
-
color: var(--main-color);
|
39
|
-
outline: none;
|
40
|
-
user-select: none;
|
41
|
-
-webkit-tap-highlight-color: transparent;
|
42
|
-
transition: color 0.2s;
|
43
|
-
}
|
44
|
-
#life-carousel-up:focus, #life-carousel-down:focus, #life-carousel-up:active, #life-carousel-down:active {
|
45
|
-
outline: none;
|
46
|
-
box-shadow: none;
|
47
|
-
background: none;
|
48
|
-
color: var(--main-color);
|
49
|
-
}
|
50
|
-
#life-carousel-up span, #life-carousel-down span {
|
51
|
-
color: inherit;
|
52
|
-
}
|
53
|
-
/* Tooltip for event squares */
|
54
|
-
|
55
|
-
.week[data-event] {
|
56
|
-
position: relative;
|
57
|
-
cursor: default !important;
|
58
|
-
}
|
8
|
+
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&display=swap');
|
59
9
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
/* Desktop: show tooltip on hover */
|
65
|
-
@media (hover: hover) {
|
66
|
-
.week[data-event]:hover::after {
|
67
|
-
content: attr(data-event);
|
68
|
-
position: absolute;
|
69
|
-
background: var(--background-color);
|
70
|
-
color: var(--text-color);
|
71
|
-
padding: 0.6rem;
|
72
|
-
border-radius: 0.2rem;
|
73
|
-
border: 1px solid var(--blockquote-color);
|
74
|
-
font-size: 1rem;
|
75
|
-
font-family: var(--font-thin);
|
76
|
-
font-weight: normal;
|
77
|
-
line-height: 1.2;
|
78
|
-
white-space: pre-line;
|
79
|
-
z-index: 100;
|
80
|
-
box-shadow: 0 4px 16px rgba(0,0,0,0.18);
|
81
|
-
top: 130%;
|
82
|
-
left: 50%;
|
83
|
-
transform: translateX(-50%);
|
84
|
-
pointer-events: none;
|
85
|
-
max-width: 30vw;
|
86
|
-
min-width: max-content;
|
87
|
-
width: max-content;
|
88
|
-
text-align: left;
|
89
|
-
display: flex;
|
90
|
-
align-items: center;
|
91
|
-
vertical-align: baseline;
|
92
|
-
}
|
93
|
-
}
|
94
|
-
|
95
|
-
/* Mobile: show tooltip on active/focus */
|
96
|
-
@media (hover: none) {
|
97
|
-
.week[data-event]:active::after,
|
98
|
-
.week[data-event]:focus::after {
|
99
|
-
content: attr(data-event);
|
100
|
-
position: absolute;
|
101
|
-
background: var(--background-color);
|
102
|
-
color: var(--text-color);
|
103
|
-
padding: 0.6rem;
|
104
|
-
border-radius: 0.2rem;
|
105
|
-
border: 1px solid var(--blockquote-color);
|
106
|
-
font-size: 1rem;
|
107
|
-
font-family: var(--font-thin);
|
108
|
-
font-weight: normal;
|
109
|
-
line-height: 1.2;
|
110
|
-
white-space: pre-line;
|
111
|
-
z-index: 100;
|
112
|
-
box-shadow: 0 4px 16px rgba(0,0,0,0.18);
|
113
|
-
top: 130%;
|
114
|
-
left: 50%;
|
115
|
-
transform: translateX(-50%);
|
116
|
-
pointer-events: none;
|
117
|
-
max-width: 50vw;
|
118
|
-
min-width: max-content;
|
119
|
-
width: max-content;
|
120
|
-
text-align: left;
|
121
|
-
display: flex;
|
122
|
-
align-items: center;
|
123
|
-
vertical-align: baseline;
|
124
|
-
}
|
125
|
-
|
126
|
-
.week[data-event] {
|
127
|
-
-webkit-tap-highlight-color: transparent;
|
128
|
-
outline: none;
|
129
|
-
}
|
130
|
-
}
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&display=swap');
|
10
|
+
/* =============================================================================
|
11
|
+
CSS CUSTOM PROPERTIES (VARIABLES)
|
12
|
+
============================================================================= */
|
135
13
|
|
136
14
|
:root {
|
137
|
-
|
138
|
-
--
|
139
|
-
|
140
|
-
|
15
|
+
/* Layout */
|
16
|
+
--width: 720px;
|
17
|
+
|
18
|
+
/* Typography */
|
19
|
+
--font-main: 'IBM Plex Mono', monospace;
|
20
|
+
--font-secondary: 'IBM Plex Mono', monospace;
|
141
21
|
--font-monospace: 'IBM Plex Mono', monospace;
|
142
|
-
--font-scale: .
|
143
|
-
|
144
|
-
|
145
|
-
--
|
146
|
-
--
|
147
|
-
--
|
148
|
-
--
|
149
|
-
--
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
22
|
+
--font-scale: 0.9em;
|
23
|
+
|
24
|
+
/* Spacing */
|
25
|
+
--spacing-xs: 5px;
|
26
|
+
--spacing-sm: 10px;
|
27
|
+
--spacing-md: 20px;
|
28
|
+
--spacing-lg: 40px;
|
29
|
+
--spacing-xl: 60px;
|
30
|
+
|
31
|
+
/* Border radius */
|
32
|
+
--radius-sm: 3px;
|
33
|
+
--radius-md: 5px;
|
34
|
+
|
35
|
+
/* Transitions */
|
36
|
+
--transition-fast: 0.2s;
|
37
|
+
--transition-normal: 0.3s;
|
38
|
+
|
39
|
+
/* Z-index scale */
|
40
|
+
--z-dropdown: 200;
|
41
|
+
--z-modal: 1000;
|
42
|
+
|
43
|
+
/* Pine Forest Theme Colors - Light Mode */
|
44
|
+
--background-color: #F5F7F3; /* Light pine needle mist */
|
45
|
+
--heading-color: #1A3025; /* Deep forest green */
|
46
|
+
--text-color: #0F2018; /* Dark pine shadow */
|
47
|
+
--link-color: #2D5016; /* Forest moss */
|
48
|
+
--visited-color: #1E3A11; /* Deep woodland */
|
49
|
+
--main-color: #4A7C59; /* Pine needle green */
|
50
|
+
--code-background-color: #E8EDEA; /* Frosted pine */
|
51
|
+
--code-color: #1A3025; /* Deep forest green */
|
52
|
+
--blockquote-color: #7A9B85; /* Sage green */
|
53
|
+
|
54
|
+
/* Interactive colors derived from theme */
|
55
|
+
--hover-color: white;
|
56
|
+
--border-color: var(--blockquote-color);
|
57
|
+
--shadow-color: rgba(0, 0, 0, 0.18);
|
58
|
+
|
59
|
+
/* Glow effects for interactive elements */
|
60
|
+
--glow-color-light: rgba(45, 80, 22, 0.3);
|
61
|
+
--glow-color-medium: rgba(45, 80, 22, 0.5);
|
62
|
+
}
|
63
|
+
|
64
|
+
/* Dark Mode Color Overrides */
|
154
65
|
@media (prefers-color-scheme: dark) {
|
155
66
|
:root {
|
156
|
-
--background-color: #
|
157
|
-
--heading-color: #
|
158
|
-
--text-color: #
|
159
|
-
--link-color: #
|
160
|
-
--visited-color: #
|
161
|
-
--main-color: #
|
162
|
-
--code-background-color: #
|
163
|
-
--code-color: #
|
164
|
-
--blockquote-color: #
|
67
|
+
--background-color: #0D1B12; /* Dark pine shadow */
|
68
|
+
--heading-color: #C8D8CE; /* Light pine mist */
|
69
|
+
--text-color: #E0EADE; /* Pale forest light */
|
70
|
+
--link-color: #7AB069; /* Bright moss green */
|
71
|
+
--visited-color: #9BC490; /* Light woodland */
|
72
|
+
--main-color: #8BB899; /* Soft pine green */
|
73
|
+
--code-background-color: #1A2B1F; /* Dark evergreen */
|
74
|
+
--code-color: #C8D8CE; /* Light pine mist */
|
75
|
+
--blockquote-color: #4A6B52; /* Forest undergrowth */
|
76
|
+
|
77
|
+
/* Dark mode glow effects */
|
78
|
+
--glow-color-light: rgba(122, 176, 105, 0.3);
|
79
|
+
--glow-color-medium: rgba(122, 176, 105, 0.5);
|
165
80
|
}
|
166
81
|
}
|
167
82
|
|
83
|
+
/* =============================================================================
|
84
|
+
BASE STYLES
|
85
|
+
============================================================================= */
|
86
|
+
|
168
87
|
body {
|
169
88
|
font-family: var(--font-secondary);
|
170
89
|
font-size: var(--font-scale);
|
171
90
|
margin: auto;
|
172
|
-
padding:
|
91
|
+
padding: var(--spacing-md);
|
173
92
|
max-width: var(--width);
|
174
93
|
text-align: left;
|
175
94
|
background-color: var(--background-color);
|
@@ -179,33 +98,63 @@ body {
|
|
179
98
|
color: var(--text-color);
|
180
99
|
}
|
181
100
|
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
h5,
|
187
|
-
h6 {
|
101
|
+
/* =============================================================================
|
102
|
+
TYPOGRAPHY
|
103
|
+
============================================================================= */
|
104
|
+
|
105
|
+
h1, h2, h3, h4, h5, h6 {
|
188
106
|
font-family: var(--font-main);
|
189
107
|
color: var(--heading-color);
|
190
108
|
}
|
191
109
|
|
110
|
+
strong, b {
|
111
|
+
color: var(--heading-color);
|
112
|
+
}
|
113
|
+
|
114
|
+
/* =============================================================================
|
115
|
+
LINKS
|
116
|
+
============================================================================= */
|
117
|
+
|
192
118
|
a {
|
193
119
|
color: var(--link-color);
|
194
120
|
font-family: var(--font-main);
|
195
121
|
cursor: pointer;
|
196
122
|
text-decoration: none;
|
197
123
|
border-bottom: 3px solid var(--main-color);
|
124
|
+
transition: all var(--transition-fast) ease;
|
198
125
|
}
|
199
126
|
|
200
127
|
a:hover {
|
201
128
|
background-color: var(--main-color);
|
202
|
-
color:
|
129
|
+
color: var(--hover-color);
|
203
130
|
text-decoration: none;
|
204
131
|
}
|
205
132
|
|
133
|
+
a:visited {
|
134
|
+
color: var(--visited-color);
|
135
|
+
}
|
136
|
+
|
137
|
+
/* External link marker */
|
138
|
+
a[href^="http"]:where(:not([href*="knhash.in/"])):not(:has(img))::after {
|
139
|
+
content: "↗";
|
140
|
+
font-family: var(--font-monospace);
|
141
|
+
}
|
142
|
+
|
143
|
+
.title:hover {
|
144
|
+
text-decoration: none;
|
145
|
+
}
|
146
|
+
|
147
|
+
.title h1 {
|
148
|
+
font-size: 1.5em;
|
149
|
+
}
|
150
|
+
|
151
|
+
/* =============================================================================
|
152
|
+
LAYOUT COMPONENTS
|
153
|
+
============================================================================= */
|
154
|
+
|
206
155
|
header {
|
207
|
-
margin-bottom:
|
208
|
-
padding-bottom:
|
156
|
+
margin-bottom: var(--spacing-lg);
|
157
|
+
padding-bottom: var(--spacing-md);
|
209
158
|
border-bottom: 3px dotted var(--main-color);
|
210
159
|
}
|
211
160
|
|
@@ -213,69 +162,51 @@ nav a {
|
|
213
162
|
margin-right: 8px;
|
214
163
|
}
|
215
164
|
|
216
|
-
|
217
|
-
|
218
|
-
color: var(--heading-color);
|
165
|
+
main {
|
166
|
+
line-height: 1.6;
|
219
167
|
}
|
220
168
|
|
221
|
-
|
222
|
-
margin:
|
223
|
-
|
169
|
+
footer {
|
170
|
+
margin-top: var(--spacing-lg);
|
171
|
+
border-top: 3px dotted var(--main-color);
|
172
|
+
padding: 25px 0;
|
173
|
+
text-align: center;
|
224
174
|
}
|
225
175
|
|
226
|
-
|
227
|
-
|
176
|
+
footer > span:has(a[href="https://bearblog.dev"]) {
|
177
|
+
display: none;
|
228
178
|
}
|
229
179
|
|
230
|
-
|
231
|
-
|
232
|
-
|
180
|
+
/* =============================================================================
|
181
|
+
CONTENT ELEMENTS
|
182
|
+
============================================================================= */
|
233
183
|
|
234
184
|
hr {
|
235
185
|
border: 0;
|
236
|
-
border-top: 1px dashed;
|
186
|
+
border-top: 1px dashed var(--border-color);
|
237
187
|
}
|
238
188
|
|
239
189
|
img {
|
240
190
|
max-width: 100%;
|
241
191
|
}
|
242
192
|
|
243
|
-
code {
|
244
|
-
font-family: var(--font-monospace);
|
245
|
-
padding: 2px;
|
246
|
-
background-color: var(--code-background-color);
|
247
|
-
color: var(--code-color);
|
248
|
-
border-radius: 3px;
|
249
|
-
}
|
250
|
-
|
251
193
|
blockquote {
|
252
194
|
border-left: 1px solid var(--blockquote-color);
|
253
195
|
color: var(--code-color);
|
254
|
-
padding-left:
|
196
|
+
padding-left: var(--spacing-md);
|
255
197
|
font-style: italic;
|
256
198
|
}
|
257
199
|
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
padding: 25px 0;
|
262
|
-
text-align: center;
|
263
|
-
}
|
264
|
-
|
265
|
-
footer > span:has(a[href="https://bearblog.dev"]) {
|
266
|
-
display: none;
|
267
|
-
}
|
268
|
-
|
269
|
-
.title:hover {
|
270
|
-
text-decoration: none;
|
271
|
-
}
|
200
|
+
/* =============================================================================
|
201
|
+
CODE & SYNTAX HIGHLIGHTING
|
202
|
+
============================================================================= */
|
272
203
|
|
273
|
-
|
274
|
-
font-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
204
|
+
code {
|
205
|
+
font-family: var(--font-monospace);
|
206
|
+
padding: 2px;
|
207
|
+
background-color: var(--code-background-color);
|
208
|
+
color: var(--code-color);
|
209
|
+
border-radius: var(--radius-sm);
|
279
210
|
}
|
280
211
|
|
281
212
|
.highlight,
|
@@ -283,13 +214,31 @@ footer > span:has(a[href="https://bearblog.dev"]) {
|
|
283
214
|
padding: 1px 15px;
|
284
215
|
background-color: var(--code-background-color);
|
285
216
|
color: var(--code-color);
|
286
|
-
border-radius:
|
217
|
+
border-radius: var(--radius-sm);
|
287
218
|
margin-block-start: 1em;
|
288
219
|
margin-block-end: 1em;
|
289
220
|
overflow-x: auto;
|
290
221
|
}
|
291
222
|
|
292
|
-
/*
|
223
|
+
/* =============================================================================
|
224
|
+
TABLES
|
225
|
+
============================================================================= */
|
226
|
+
|
227
|
+
table {
|
228
|
+
width: 100%;
|
229
|
+
border-spacing: 0;
|
230
|
+
}
|
231
|
+
|
232
|
+
th, td {
|
233
|
+
padding: 6px 13px;
|
234
|
+
border: 1px solid var(--border-color);
|
235
|
+
font-size: 1em;
|
236
|
+
}
|
237
|
+
|
238
|
+
/* =============================================================================
|
239
|
+
BLOG POST LISTINGS
|
240
|
+
============================================================================= */
|
241
|
+
|
293
242
|
ul.blog-posts {
|
294
243
|
list-style-type: none;
|
295
244
|
padding: unset;
|
@@ -297,304 +246,393 @@ ul.blog-posts {
|
|
297
246
|
|
298
247
|
ul.blog-posts li {
|
299
248
|
display: flex;
|
300
|
-
margin-bottom:
|
301
|
-
}
|
302
|
-
|
303
|
-
i time {
|
304
|
-
font-style: normal;
|
305
|
-
opacity: 0.7;
|
249
|
+
margin-bottom: var(--spacing-sm);
|
306
250
|
}
|
307
251
|
|
308
252
|
ul.blog-posts li span {
|
309
253
|
flex: 0 0 130px;
|
310
254
|
}
|
311
255
|
|
312
|
-
|
313
256
|
ul.blog-posts li a:visited {
|
314
257
|
color: var(--visited-color);
|
315
258
|
}
|
316
259
|
|
317
|
-
|
318
|
-
|
260
|
+
i time {
|
261
|
+
font-style: normal;
|
262
|
+
opacity: 0.7;
|
319
263
|
}
|
320
264
|
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
265
|
+
/* =============================================================================
|
266
|
+
UTILITY CLASSES
|
267
|
+
============================================================================= */
|
268
|
+
|
269
|
+
.inline {
|
270
|
+
width: auto !important;
|
325
271
|
}
|
326
272
|
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
font-family: var(--font-monospace);
|
273
|
+
button {
|
274
|
+
margin: 0;
|
275
|
+
cursor: pointer;
|
331
276
|
}
|
332
277
|
|
333
|
-
/*
|
278
|
+
/* =============================================================================
|
279
|
+
FORM ELEMENTS
|
280
|
+
============================================================================= */
|
281
|
+
|
334
282
|
input, button, textarea, select {
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
283
|
+
margin: 0;
|
284
|
+
padding: 0;
|
285
|
+
box-sizing: border-box;
|
286
|
+
font: inherit;
|
339
287
|
}
|
288
|
+
|
340
289
|
legend {
|
341
|
-
|
342
|
-
|
290
|
+
margin: var(--spacing-md) 0;
|
291
|
+
font-weight: bold;
|
343
292
|
}
|
293
|
+
|
344
294
|
label {
|
345
|
-
|
346
|
-
|
295
|
+
display: block;
|
296
|
+
font-weight: bold;
|
347
297
|
}
|
348
|
-
|
349
|
-
textarea {
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
298
|
+
|
299
|
+
input, textarea {
|
300
|
+
margin: 0 0 var(--spacing-sm);
|
301
|
+
padding: var(--spacing-xs) var(--spacing-sm);
|
302
|
+
color: var(--text-color);
|
303
|
+
background: var(--code-background-color);
|
304
|
+
border: 2px solid var(--link-color);
|
305
|
+
border-radius: var(--radius-md);
|
356
306
|
}
|
307
|
+
|
357
308
|
input {
|
358
|
-
|
309
|
+
width: 55%;
|
359
310
|
}
|
311
|
+
|
360
312
|
textarea {
|
361
|
-
|
362
|
-
}
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
313
|
+
width: 95%;
|
314
|
+
}
|
315
|
+
|
316
|
+
input[type=button],
|
317
|
+
input[type=submit],
|
318
|
+
input[type=reset] {
|
319
|
+
margin: 0 0 var(--spacing-md);
|
320
|
+
padding: 7px;
|
321
|
+
font-family: var(--font-secondary);
|
322
|
+
font-weight: bold;
|
323
|
+
color: var(--background-color);
|
324
|
+
background: var(--link-color);
|
325
|
+
border-radius: var(--radius-md);
|
326
|
+
cursor: pointer;
|
372
327
|
}
|
328
|
+
|
373
329
|
::placeholder {
|
374
|
-
|
375
|
-
|
330
|
+
color: var(--text-color);
|
331
|
+
opacity: 0.7;
|
376
332
|
}
|
377
333
|
|
378
|
-
/*
|
334
|
+
/* =============================================================================
|
335
|
+
LIFE IN WEEKS - MAIN COMPONENT
|
336
|
+
============================================================================= */
|
337
|
+
|
379
338
|
.life-in-weeks {
|
380
|
-
|
339
|
+
margin: var(--spacing-md) 0;
|
381
340
|
}
|
382
341
|
|
383
342
|
.weeks-grid {
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
343
|
+
margin: var(--spacing-xl) 0;
|
344
|
+
display: flex;
|
345
|
+
flex-wrap: wrap;
|
346
|
+
gap: 2px;
|
347
|
+
max-width: 100%;
|
348
|
+
align-items: flex-start;
|
390
349
|
}
|
391
350
|
|
392
|
-
/*
|
393
|
-
|
351
|
+
/* Week Square Base Styles */
|
394
352
|
.week {
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
353
|
+
width: 16px;
|
354
|
+
height: 16px;
|
355
|
+
border: 1px solid var(--main-color);
|
356
|
+
background-color: var(--background-color);
|
357
|
+
display: inline-flex;
|
358
|
+
align-items: center;
|
359
|
+
justify-content: center;
|
360
|
+
position: relative;
|
361
|
+
cursor: default;
|
362
|
+
font-family: var(--font-secondary);
|
363
|
+
font-size: var(--font-scale);
|
364
|
+
line-height: 1.5;
|
365
|
+
padding: 2px;
|
366
|
+
white-space: nowrap;
|
367
|
+
box-sizing: border-box;
|
368
|
+
transition: all var(--transition-fast) ease;
|
369
|
+
}
|
370
|
+
|
371
|
+
/* Week Square State Variations */
|
413
372
|
.week.decade-0 {
|
414
|
-
|
373
|
+
background-color: var(--background-color);
|
415
374
|
}
|
416
375
|
|
417
376
|
.week.decade-1 {
|
418
|
-
|
377
|
+
background-color: var(--code-background-color);
|
419
378
|
}
|
420
379
|
|
421
380
|
.week.future {
|
422
|
-
|
423
|
-
|
424
|
-
|
381
|
+
background-color: transparent;
|
382
|
+
border-color: var(--blockquote-color);
|
383
|
+
opacity: 0.3;
|
425
384
|
}
|
426
385
|
|
427
386
|
.week.decade-1.future {
|
428
|
-
|
429
|
-
|
387
|
+
background-color: var(--code-background-color);
|
388
|
+
opacity: 0.2;
|
430
389
|
}
|
431
390
|
|
432
391
|
.week.has-events {
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
392
|
+
border-color: var(--visited-color);
|
393
|
+
background-color: var(--blockquote-color);
|
394
|
+
color: inherit;
|
395
|
+
font-size: var(--font-scale);
|
396
|
+
padding: 0;
|
438
397
|
}
|
439
398
|
|
440
399
|
.week.has-events.future {
|
441
|
-
|
442
|
-
|
443
|
-
|
400
|
+
border-color: var(--blockquote-color);
|
401
|
+
opacity: 0.6;
|
402
|
+
color: var(--blockquote-color);
|
444
403
|
}
|
445
404
|
|
405
|
+
/* Current Week Animation */
|
446
406
|
.week.current {
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
407
|
+
animation: pulse 2s ease-in-out infinite;
|
408
|
+
border-width: 2px;
|
409
|
+
border-color: var(--link-color);
|
410
|
+
box-shadow: 0 0 10px var(--glow-color-light);
|
451
411
|
}
|
452
412
|
|
453
413
|
.week.current.has-events {
|
454
|
-
|
414
|
+
box-shadow: 0 0 10px var(--glow-color-medium);
|
455
415
|
}
|
456
416
|
|
457
417
|
@keyframes pulse {
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
418
|
+
0% {
|
419
|
+
transform: scale(1);
|
420
|
+
opacity: 1;
|
421
|
+
}
|
422
|
+
50% {
|
423
|
+
transform: scale(1.1);
|
424
|
+
opacity: 0.7;
|
425
|
+
}
|
426
|
+
100% {
|
427
|
+
transform: scale(1);
|
428
|
+
opacity: 1;
|
429
|
+
}
|
470
430
|
}
|
471
431
|
|
432
|
+
/* Dark Mode Week Adjustments */
|
472
433
|
@media (prefers-color-scheme: dark) {
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
434
|
+
.week.current {
|
435
|
+
box-shadow: 0 0 10px var(--glow-color-light);
|
436
|
+
}
|
437
|
+
|
438
|
+
.week.current.has-events {
|
439
|
+
box-shadow: 0 0 10px var(--glow-color-medium);
|
440
|
+
}
|
480
441
|
}
|
481
442
|
|
443
|
+
/* =============================================================================
|
444
|
+
LIFE IN WEEKS - INTERACTIVE COMPONENTS
|
445
|
+
============================================================================= */
|
446
|
+
|
447
|
+
/* Event Indicator */
|
482
448
|
.event-indicator {
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
449
|
+
position: absolute;
|
450
|
+
top: 50%;
|
451
|
+
left: 50%;
|
452
|
+
transform: translate(-50%, -50%);
|
453
|
+
color: var(--background-color);
|
454
|
+
font-size: 8px;
|
455
|
+
line-height: 1;
|
490
456
|
}
|
491
457
|
|
458
|
+
/* Events List */
|
492
459
|
.events-list {
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
460
|
+
margin: var(--spacing-lg) 0;
|
461
|
+
padding: var(--spacing-md);
|
462
|
+
background-color: var(--code-background-color);
|
463
|
+
border-radius: var(--radius-md);
|
497
464
|
}
|
498
465
|
|
499
466
|
.events-list h3 {
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
467
|
+
margin-top: 0;
|
468
|
+
color: var(--heading-color);
|
469
|
+
border-bottom: 1px solid var(--main-color);
|
470
|
+
padding-bottom: var(--spacing-sm);
|
504
471
|
}
|
505
472
|
|
506
473
|
.event-item {
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
|
474
|
+
margin: var(--spacing-sm) 0;
|
475
|
+
padding: 8px 0;
|
476
|
+
border-bottom: 1px dotted var(--blockquote-color);
|
477
|
+
font-size: 0.9em;
|
478
|
+
line-height: 1.4;
|
512
479
|
}
|
513
480
|
|
514
481
|
.event-item:last-child {
|
515
|
-
|
482
|
+
border-bottom: none;
|
516
483
|
}
|
517
484
|
|
518
485
|
.event-year {
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
486
|
+
color: var(--main-color);
|
487
|
+
margin-right: 15px;
|
488
|
+
min-width: 50px;
|
489
|
+
display: inline-block;
|
523
490
|
}
|
524
491
|
|
525
492
|
.event-name {
|
526
|
-
|
527
|
-
|
493
|
+
color: var(--heading-color);
|
494
|
+
margin-right: var(--spacing-sm);
|
528
495
|
}
|
529
496
|
|
530
497
|
.event-desc {
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
498
|
+
color: var(--text-color);
|
499
|
+
font-style: italic;
|
500
|
+
display: block;
|
501
|
+
margin-top: var(--spacing-xs);
|
502
|
+
margin-left: 65px;
|
503
|
+
}
|
504
|
+
|
505
|
+
/* =============================================================================
|
506
|
+
LIFE IN WEEKS - CAROUSEL COMPONENTS
|
507
|
+
============================================================================= */
|
508
|
+
|
509
|
+
/* Highlighted week number in carousel quote */
|
510
|
+
.carousel-weeknum {
|
511
|
+
color: var(--link-color);
|
512
|
+
font-weight: bold;
|
513
|
+
font-style: normal;
|
514
|
+
}
|
515
|
+
|
516
|
+
/* Pulse effect for carousel-selected week */
|
517
|
+
.carousel-pulse {
|
518
|
+
animation: carousel-pulse 1.2s cubic-bezier(0.4,0,0.6,1) infinite;
|
519
|
+
border-width: 2px !important;
|
520
|
+
border-color: var(--link-color) !important;
|
521
|
+
box-shadow: 0 0 10px var(--glow-color-medium);
|
522
|
+
z-index: 2;
|
523
|
+
}
|
524
|
+
|
525
|
+
@keyframes carousel-pulse {
|
526
|
+
0% {
|
527
|
+
transform: scale(1);
|
528
|
+
opacity: 1;
|
529
|
+
}
|
530
|
+
50% {
|
531
|
+
transform: scale(1.18);
|
532
|
+
opacity: 0.7;
|
533
|
+
}
|
534
|
+
100% {
|
535
|
+
transform: scale(1);
|
536
|
+
opacity: 1;
|
537
|
+
}
|
538
|
+
}
|
539
|
+
|
540
|
+
/* Carousel arrow button styles */
|
541
|
+
#life-carousel-up,
|
542
|
+
#life-carousel-down {
|
543
|
+
background: none;
|
544
|
+
border: none;
|
545
|
+
cursor: pointer;
|
546
|
+
font-size: 1.5em;
|
547
|
+
line-height: 1;
|
548
|
+
padding: 0.2em;
|
549
|
+
color: var(--main-color);
|
550
|
+
outline: none;
|
551
|
+
user-select: none;
|
552
|
+
-webkit-tap-highlight-color: transparent;
|
553
|
+
transition: color var(--transition-fast);
|
536
554
|
}
|
537
555
|
|
538
|
-
|
539
|
-
|
556
|
+
#life-carousel-up:focus,
|
557
|
+
#life-carousel-down:focus,
|
558
|
+
#life-carousel-up:active,
|
559
|
+
#life-carousel-down:active {
|
560
|
+
outline: none;
|
561
|
+
box-shadow: none;
|
562
|
+
background: none;
|
563
|
+
color: var(--main-color);
|
564
|
+
}
|
565
|
+
|
566
|
+
#life-carousel-up span,
|
567
|
+
#life-carousel-down span {
|
568
|
+
color: inherit;
|
569
|
+
}
|
570
|
+
|
571
|
+
/* =============================================================================
|
572
|
+
RESPONSIVE DESIGN
|
573
|
+
============================================================================= */
|
574
|
+
|
575
|
+
/* Large screens - optimize week grid sizing */
|
540
576
|
@media (max-width: 1200px) {
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
577
|
+
.week {
|
578
|
+
width: calc((100vw - 40px - (51 * 2px)) / 52);
|
579
|
+
height: calc((100vw - 40px - (51 * 2px)) / 52);
|
580
|
+
font-size: calc(var(--font-scale) * 0.8);
|
581
|
+
padding: 0;
|
582
|
+
min-width: 8px;
|
583
|
+
min-height: 8px;
|
584
|
+
}
|
585
|
+
|
586
|
+
.week.has-events {
|
587
|
+
font-size: calc(var(--font-scale) * 0.8);
|
588
|
+
padding: 0;
|
589
|
+
}
|
554
590
|
}
|
555
591
|
|
592
|
+
/* Tablet screens */
|
556
593
|
@media (max-width: 768px) {
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
594
|
+
.week {
|
595
|
+
width: calc((100vw - 40px - (51 * 1px)) / 52);
|
596
|
+
height: calc((100vw - 40px - (51 * 1px)) / 52);
|
597
|
+
font-size: calc(var(--font-scale) * 0.7);
|
598
|
+
padding: 0;
|
599
|
+
min-width: 8px;
|
600
|
+
min-height: 8px;
|
601
|
+
}
|
602
|
+
|
603
|
+
.week.has-events {
|
604
|
+
font-size: calc(var(--font-scale) * 0.7);
|
605
|
+
padding: 0;
|
606
|
+
}
|
607
|
+
|
608
|
+
.weeks-grid {
|
609
|
+
gap: 1px;
|
610
|
+
}
|
611
|
+
|
612
|
+
.event-desc {
|
613
|
+
margin-left: 0;
|
614
|
+
}
|
578
615
|
}
|
579
616
|
|
617
|
+
/* Mobile screens */
|
580
618
|
@media (max-width: 480px) {
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
619
|
+
.week {
|
620
|
+
width: calc((100vw - 40px - (51 * 1px)) / 52);
|
621
|
+
height: calc((100vw - 40px - (51 * 1px)) / 52);
|
622
|
+
font-size: calc(var(--font-scale) * 0.6);
|
623
|
+
padding: 0;
|
624
|
+
min-width: 8px;
|
625
|
+
min-height: 8px;
|
626
|
+
}
|
627
|
+
|
628
|
+
.week.has-events {
|
629
|
+
font-size: calc(var(--font-scale) * 0.6);
|
630
|
+
padding: 0;
|
631
|
+
}
|
632
|
+
|
633
|
+
.weeks-grid {
|
634
|
+
gap: 1px;
|
635
|
+
}
|
598
636
|
}
|
599
637
|
|
600
638
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-bear-theme
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- knhash
|
@@ -66,8 +66,9 @@ dependencies:
|
|
66
66
|
- !ruby/object:Gem::Version
|
67
67
|
version: '1.7'
|
68
68
|
description: jekyllBear is a clean, minimal Jekyll theme focused on readability and
|
69
|
-
simplicity. Features
|
70
|
-
|
69
|
+
simplicity. Features a Pine Forest color palette with cool, nature-inspired greens,
|
70
|
+
IBM Plex Mono typography, responsive design, tag system, life tracking visualization,
|
71
|
+
and a distraction-free reading experience inspired by Bear Blog.
|
71
72
|
email:
|
72
73
|
- mail@knhash.in
|
73
74
|
executables: []
|
@@ -133,5 +134,5 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
134
|
requirements: []
|
134
135
|
rubygems_version: 3.6.2
|
135
136
|
specification_version: 4
|
136
|
-
summary: A minimal, text focused blog theme
|
137
|
+
summary: A minimal, text focused blog theme with Pine Forest aesthetics
|
137
138
|
test_files: []
|