@noxion/renderer 0.1.0 → 0.2.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.
Files changed (99) hide show
  1. package/dist/components/DocsBreadcrumb.d.ts +5 -0
  2. package/dist/components/DocsBreadcrumb.d.ts.map +1 -0
  3. package/dist/components/DocsBreadcrumb.js +10 -0
  4. package/dist/components/DocsBreadcrumb.js.map +1 -0
  5. package/dist/components/DocsSidebar.d.ts +5 -0
  6. package/dist/components/DocsSidebar.d.ts.map +1 -0
  7. package/dist/components/DocsSidebar.js +15 -0
  8. package/dist/components/DocsSidebar.js.map +1 -0
  9. package/dist/components/EmptyState.d.ts.map +1 -1
  10. package/dist/components/EmptyState.js +2 -1
  11. package/dist/components/EmptyState.js.map +1 -1
  12. package/dist/components/FeaturedPostCard.d.ts +5 -0
  13. package/dist/components/FeaturedPostCard.d.ts.map +1 -0
  14. package/dist/components/FeaturedPostCard.js +19 -0
  15. package/dist/components/FeaturedPostCard.js.map +1 -0
  16. package/dist/components/Footer.d.ts.map +1 -1
  17. package/dist/components/Footer.js +2 -1
  18. package/dist/components/Footer.js.map +1 -1
  19. package/dist/components/Header.d.ts +1 -1
  20. package/dist/components/Header.d.ts.map +1 -1
  21. package/dist/components/Header.js +4 -2
  22. package/dist/components/Header.js.map +1 -1
  23. package/dist/components/HeroSection.d.ts +7 -0
  24. package/dist/components/HeroSection.d.ts.map +1 -0
  25. package/dist/components/HeroSection.js +16 -0
  26. package/dist/components/HeroSection.js.map +1 -0
  27. package/dist/components/NoxionLogo.d.ts +5 -0
  28. package/dist/components/NoxionLogo.d.ts.map +1 -0
  29. package/dist/components/NoxionLogo.js +7 -0
  30. package/dist/components/NoxionLogo.js.map +1 -0
  31. package/dist/components/PortfolioFilter.d.ts +5 -0
  32. package/dist/components/PortfolioFilter.d.ts.map +1 -0
  33. package/dist/components/PortfolioFilter.js +20 -0
  34. package/dist/components/PortfolioFilter.js.map +1 -0
  35. package/dist/components/PortfolioProjectCard.d.ts +5 -0
  36. package/dist/components/PortfolioProjectCard.d.ts.map +1 -0
  37. package/dist/components/PortfolioProjectCard.js +13 -0
  38. package/dist/components/PortfolioProjectCard.js.map +1 -0
  39. package/dist/components/PostCard.d.ts +1 -1
  40. package/dist/components/PostCard.d.ts.map +1 -1
  41. package/dist/components/PostCard.js +13 -4
  42. package/dist/components/PostCard.js.map +1 -1
  43. package/dist/components/Search.d.ts.map +1 -1
  44. package/dist/components/Search.js +2 -1
  45. package/dist/components/Search.js.map +1 -1
  46. package/dist/components/TagFilter.d.ts +1 -1
  47. package/dist/components/TagFilter.d.ts.map +1 -1
  48. package/dist/components/TagFilter.js +15 -9
  49. package/dist/components/TagFilter.js.map +1 -1
  50. package/dist/components/ThemeToggle.d.ts.map +1 -1
  51. package/dist/components/ThemeToggle.js +4 -8
  52. package/dist/components/ThemeToggle.js.map +1 -1
  53. package/dist/index.d.ts +14 -2
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +10 -1
  56. package/dist/index.js.map +1 -1
  57. package/dist/templates/DocsPage.d.ts +3 -0
  58. package/dist/templates/DocsPage.d.ts.map +1 -0
  59. package/dist/templates/DocsPage.js +13 -0
  60. package/dist/templates/DocsPage.js.map +1 -0
  61. package/dist/templates/HomePage.d.ts.map +1 -1
  62. package/dist/templates/HomePage.js +11 -2
  63. package/dist/templates/HomePage.js.map +1 -1
  64. package/dist/templates/PortfolioGrid.d.ts +3 -0
  65. package/dist/templates/PortfolioGrid.d.ts.map +1 -0
  66. package/dist/templates/PortfolioGrid.js +10 -0
  67. package/dist/templates/PortfolioGrid.js.map +1 -0
  68. package/dist/templates/PortfolioProject.d.ts +3 -0
  69. package/dist/templates/PortfolioProject.d.ts.map +1 -0
  70. package/dist/templates/PortfolioProject.js +12 -0
  71. package/dist/templates/PortfolioProject.js.map +1 -0
  72. package/dist/templates/PostPage.d.ts +10 -0
  73. package/dist/templates/PostPage.d.ts.map +1 -1
  74. package/dist/templates/PostPage.js +24 -2
  75. package/dist/templates/PostPage.js.map +1 -1
  76. package/dist/templates/index.d.ts +3 -0
  77. package/dist/templates/index.d.ts.map +1 -1
  78. package/dist/templates/index.js +3 -0
  79. package/dist/templates/index.js.map +1 -1
  80. package/dist/theme/ThemeProvider.d.ts.map +1 -1
  81. package/dist/theme/ThemeProvider.js +1 -1
  82. package/dist/theme/ThemeProvider.js.map +1 -1
  83. package/dist/theme/define-theme.js +1 -1
  84. package/dist/theme/define-theme.js.map +1 -1
  85. package/dist/theme/extend-theme.d.ts +27 -0
  86. package/dist/theme/extend-theme.d.ts.map +1 -0
  87. package/dist/theme/extend-theme.js +102 -0
  88. package/dist/theme/extend-theme.js.map +1 -0
  89. package/dist/theme/template-resolver.d.ts.map +1 -1
  90. package/dist/theme/template-resolver.js +35 -1
  91. package/dist/theme/template-resolver.js.map +1 -1
  92. package/dist/theme/types.d.ts +56 -0
  93. package/dist/theme/types.d.ts.map +1 -1
  94. package/dist/theme/validate-theme.d.ts +14 -0
  95. package/dist/theme/validate-theme.d.ts.map +1 -0
  96. package/dist/theme/validate-theme.js +235 -0
  97. package/dist/theme/validate-theme.js.map +1 -0
  98. package/package.json +2 -1
  99. package/src/styles/noxion.css +1426 -280
@@ -1,31 +1,31 @@
1
1
  :root {
2
- --noxion-primary: #2563eb;
2
+ --noxion-primary: #000000;
3
3
  --noxion-primaryForeground: #ffffff;
4
4
  --noxion-background: #ffffff;
5
- --noxion-foreground: #171717;
6
- --noxion-muted: #f5f5f5;
7
- --noxion-mutedForeground: #737373;
8
- --noxion-border: #e5e5e5;
9
- --noxion-accent: #f5f5f5;
10
- --noxion-accentForeground: #171717;
5
+ --noxion-foreground: #111111;
6
+ --noxion-muted: #f2f2f2;
7
+ --noxion-mutedForeground: #6b6b6b;
8
+ --noxion-border: #e8e8e8;
9
+ --noxion-accent: #f7f7f7;
10
+ --noxion-accentForeground: #111111;
11
11
  --noxion-card: #ffffff;
12
- --noxion-cardForeground: #171717;
12
+ --noxion-cardForeground: #111111;
13
13
 
14
- --noxion-font-sans: "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
14
+ --noxion-font-sans: "Geist", "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
15
15
  --noxion-font-serif: Georgia, "Times New Roman", serif;
16
- --noxion-font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, monospace;
16
+ --noxion-font-mono: "Geist Mono", "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, monospace;
17
17
 
18
18
  --noxion-spacing-content: 720px;
19
19
  --noxion-spacing-sidebar: 260px;
20
20
  --noxion-border-radius: 0.5rem;
21
21
 
22
- --noxion-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.04);
23
- --noxion-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.06);
24
- --noxion-shadow-lg: 0 12px 32px rgba(0, 0, 0, 0.08);
22
+ --noxion-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.04), 0 1px 1px rgba(0, 0, 0, 0.03);
23
+ --noxion-shadow-md: 0 4px 8px rgba(0, 0, 0, 0.06), 0 1px 3px rgba(0, 0, 0, 0.04);
24
+ --noxion-shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.08), 0 2px 6px rgba(0, 0, 0, 0.04);
25
25
 
26
- --noxion-transition-fast: 120ms ease;
27
- --noxion-transition-normal: 200ms ease;
28
- --noxion-transition-slow: 300ms ease;
26
+ --noxion-transition-fast: 100ms cubic-bezier(0.4, 0, 0.2, 1);
27
+ --noxion-transition-normal: 180ms cubic-bezier(0.4, 0, 0.2, 1);
28
+ --noxion-transition-slow: 280ms cubic-bezier(0.4, 0, 0.2, 1);
29
29
 
30
30
  --noxion-breakpoint-sm: 640px;
31
31
  --noxion-breakpoint-md: 768px;
@@ -34,21 +34,21 @@
34
34
  }
35
35
 
36
36
  [data-theme="dark"] {
37
- --noxion-primary: #3b82f6;
38
- --noxion-primaryForeground: #ffffff;
39
- --noxion-background: #0a0a0a;
37
+ --noxion-primary: #ffffff;
38
+ --noxion-primaryForeground: #000000;
39
+ --noxion-background: #0c0c0c;
40
40
  --noxion-foreground: #ededed;
41
41
  --noxion-muted: #1a1a1a;
42
42
  --noxion-mutedForeground: #888888;
43
- --noxion-border: #1f1f1f;
44
- --noxion-accent: #1a1a1a;
43
+ --noxion-border: #272727;
44
+ --noxion-accent: #1e1e1e;
45
45
  --noxion-accentForeground: #ededed;
46
- --noxion-card: #111111;
46
+ --noxion-card: #141414;
47
47
  --noxion-cardForeground: #ededed;
48
48
 
49
- --noxion-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.2);
50
- --noxion-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.3);
51
- --noxion-shadow-lg: 0 12px 32px rgba(0, 0, 0, 0.4);
49
+ --noxion-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3);
50
+ --noxion-shadow-md: 0 4px 8px rgba(0, 0, 0, 0.4);
51
+ --noxion-shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.5);
52
52
  }
53
53
 
54
54
  *,
@@ -60,17 +60,19 @@
60
60
  body {
61
61
  margin: 0;
62
62
  font-family: var(--noxion-font-sans);
63
+ font-size: 0.9375rem;
63
64
  color: var(--noxion-foreground);
64
65
  background-color: var(--noxion-background);
65
66
  line-height: 1.6;
66
67
  -webkit-font-smoothing: antialiased;
67
68
  -moz-osx-font-smoothing: grayscale;
68
69
  text-rendering: optimizeLegibility;
70
+ font-feature-settings: "rlig" 1, "calt" 1, "ss01" 1;
69
71
  }
70
72
 
71
73
  ::selection {
72
- background-color: var(--noxion-primary);
73
- color: var(--noxion-primaryForeground);
74
+ background-color: var(--noxion-foreground);
75
+ color: var(--noxion-background);
74
76
  }
75
77
 
76
78
  a {
@@ -95,62 +97,75 @@ img {
95
97
  display: flex;
96
98
  align-items: center;
97
99
  justify-content: space-between;
98
- height: 64px;
99
- padding: 0 1.5rem;
100
+ height: 56px;
101
+ padding: 0 1.25rem;
100
102
  border-bottom: 1px solid var(--noxion-border);
101
- background-color: color-mix(in srgb, var(--noxion-background) 80%, transparent);
102
- backdrop-filter: blur(12px);
103
- -webkit-backdrop-filter: blur(12px);
103
+ background-color: color-mix(in srgb, var(--noxion-background) 82%, transparent);
104
+ backdrop-filter: saturate(180%) blur(16px);
105
+ -webkit-backdrop-filter: saturate(180%) blur(16px);
104
106
  }
105
107
 
106
108
  @media (max-width: 640px) {
107
109
  .noxion-header {
108
- height: 56px;
110
+ height: 52px;
109
111
  padding: 0 1rem;
110
112
  }
111
113
  }
112
114
 
113
115
  .noxion-header__logo {
114
- font-size: 1.125rem;
116
+ display: flex;
117
+ align-items: center;
118
+ font-size: 0.9375rem;
115
119
  font-weight: 600;
116
120
  color: var(--noxion-foreground);
117
121
  text-decoration: none;
118
- letter-spacing: -0.02em;
122
+ letter-spacing: -0.03em;
119
123
  transition: opacity var(--noxion-transition-fast);
120
124
  }
121
125
 
126
+ .noxion-header__logo svg {
127
+ height: 1.125rem;
128
+ width: auto;
129
+ }
130
+
122
131
  .noxion-header__logo:hover {
123
- opacity: 0.7;
132
+ opacity: 0.6;
124
133
  }
125
134
 
126
135
  .noxion-header__nav {
127
136
  display: flex;
128
137
  align-items: center;
129
- gap: 2rem;
138
+ gap: 0.125rem;
130
139
  }
131
140
 
132
141
  @media (max-width: 640px) {
133
142
  .noxion-header__nav {
134
- gap: 1.25rem;
143
+ gap: 0;
135
144
  }
136
145
  }
137
146
 
138
147
  .noxion-header__nav-link {
139
148
  position: relative;
140
- font-size: 0.875rem;
149
+ font-size: 0.8125rem;
150
+ font-weight: 450;
141
151
  color: var(--noxion-mutedForeground);
142
152
  text-decoration: none;
143
- transition: color var(--noxion-transition-fast);
153
+ padding: 0.3125rem 0.625rem;
154
+ border-radius: 0.375rem;
155
+ transition:
156
+ color var(--noxion-transition-fast),
157
+ background-color var(--noxion-transition-fast);
144
158
  }
145
159
 
146
160
  .noxion-header__nav-link:hover {
147
161
  color: var(--noxion-foreground);
162
+ background-color: var(--noxion-muted);
148
163
  }
149
164
 
150
165
  .noxion-header__actions {
151
166
  display: flex;
152
167
  align-items: center;
153
- gap: 0.5rem;
168
+ gap: 0.25rem;
154
169
  }
155
170
 
156
171
  /* ============================================
@@ -161,7 +176,7 @@ img {
161
176
  display: flex;
162
177
  align-items: center;
163
178
  justify-content: space-between;
164
- padding: 2rem 1.5rem;
179
+ padding: 1.5rem 1.25rem;
165
180
  border-top: 1px solid var(--noxion-border);
166
181
  font-size: 0.8125rem;
167
182
  color: var(--noxion-mutedForeground);
@@ -170,20 +185,25 @@ img {
170
185
  @media (max-width: 640px) {
171
186
  .noxion-footer {
172
187
  flex-direction: column;
173
- gap: 0.5rem;
188
+ gap: 0.375rem;
174
189
  text-align: center;
175
- padding: 1.5rem 1rem;
190
+ padding: 1.25rem 1rem;
176
191
  }
177
192
  }
178
193
 
179
194
  .noxion-footer__copyright {
180
195
  color: inherit;
196
+ letter-spacing: -0.01em;
181
197
  }
182
198
 
183
199
  .noxion-footer__powered-by {
200
+ display: inline-flex;
201
+ align-items: center;
202
+ gap: 0.25rem;
184
203
  color: var(--noxion-mutedForeground);
185
204
  text-decoration: none;
186
205
  transition: color var(--noxion-transition-fast);
206
+ letter-spacing: -0.01em;
187
207
  }
188
208
 
189
209
  .noxion-footer__powered-by:hover {
@@ -195,7 +215,8 @@ img {
195
215
  ============================================ */
196
216
 
197
217
  .noxion-post-card {
198
- display: block;
218
+ display: flex;
219
+ flex-direction: column;
199
220
  text-decoration: none;
200
221
  color: inherit;
201
222
  border-radius: var(--noxion-border-radius);
@@ -209,22 +230,13 @@ img {
209
230
  }
210
231
 
211
232
  .noxion-post-card:hover {
212
- border-color: var(--noxion-mutedForeground);
213
- box-shadow: var(--noxion-shadow-md);
233
+ border-color: color-mix(in srgb, var(--noxion-foreground) 20%, transparent);
234
+ box-shadow: var(--noxion-shadow-lg);
214
235
  transform: translateY(-2px);
215
236
  }
216
237
 
217
- .noxion-post-card--text-only {
218
- border: none;
219
- border-bottom: 1px solid var(--noxion-border);
220
- border-radius: 0;
221
- background-color: transparent;
222
- }
223
-
224
- .noxion-post-card--text-only:hover {
225
- border-color: var(--noxion-mutedForeground);
226
- box-shadow: none;
227
- transform: none;
238
+ .noxion-post-card--no-cover .noxion-post-card__cover {
239
+ aspect-ratio: 3 / 1;
228
240
  }
229
241
 
230
242
  .noxion-post-card__cover {
@@ -240,50 +252,71 @@ img {
240
252
  height: 100%;
241
253
  object-fit: cover;
242
254
  object-position: center;
243
- transition: transform var(--noxion-transition-slow);
255
+ transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
244
256
  }
245
257
 
246
258
  .noxion-post-card:hover .noxion-post-card__cover-image {
247
- transform: scale(1.03);
259
+ transform: scale(1.04);
260
+ }
261
+
262
+ .noxion-post-card__cover-overlay {
263
+ position: absolute;
264
+ inset: 0;
265
+ background: linear-gradient(to top, rgba(0, 0, 0, 0.06) 0%, transparent 40%);
266
+ pointer-events: none;
248
267
  }
249
268
 
250
269
  .noxion-post-card__body {
270
+ display: flex;
271
+ flex-direction: column;
272
+ flex: 1;
273
+ padding: 1.25rem;
274
+ gap: 0;
275
+ }
276
+
277
+ .noxion-post-card--no-cover .noxion-post-card__body {
251
278
  padding: 1.25rem;
252
279
  }
253
280
 
254
- .noxion-post-card--text-only .noxion-post-card__body {
255
- padding: 1.25rem 0;
281
+ .noxion-post-card__header {
282
+ display: flex;
283
+ align-items: center;
284
+ gap: 0.5rem;
285
+ margin-bottom: 0.5rem;
256
286
  }
257
287
 
258
288
  .noxion-post-card__category {
259
289
  display: inline-block;
260
- font-size: 0.75rem;
261
- font-weight: 500;
262
- color: var(--noxion-primary);
290
+ font-size: 0.6875rem;
291
+ font-weight: 600;
292
+ color: var(--noxion-mutedForeground);
293
+ letter-spacing: 0.04em;
263
294
  text-transform: uppercase;
264
- letter-spacing: 0.05em;
265
- margin-bottom: 0.375rem;
266
295
  }
267
296
 
268
297
  .noxion-post-card__title {
269
298
  margin: 0;
270
- font-size: 1.125rem;
299
+ font-size: 1.0625rem;
271
300
  font-weight: 600;
272
301
  color: var(--noxion-cardForeground);
273
302
  line-height: 1.4;
274
- letter-spacing: -0.01em;
303
+ letter-spacing: -0.02em;
304
+ display: -webkit-box;
305
+ -webkit-line-clamp: 2;
306
+ -webkit-box-orient: vertical;
307
+ overflow: hidden;
275
308
  }
276
309
 
277
- .noxion-post-card--text-only .noxion-post-card__title {
278
- font-size: 1.25rem;
279
- letter-spacing: -0.02em;
310
+ .noxion-post-card--no-cover .noxion-post-card__title {
311
+ font-size: 1.125rem;
312
+ letter-spacing: -0.025em;
280
313
  }
281
314
 
282
315
  .noxion-post-card__description {
283
316
  margin: 0.5rem 0 0;
284
- font-size: 0.875rem;
317
+ font-size: 0.8125rem;
285
318
  color: var(--noxion-mutedForeground);
286
- line-height: 1.5;
319
+ line-height: 1.6;
287
320
  display: -webkit-box;
288
321
  -webkit-line-clamp: 2;
289
322
  -webkit-box-orient: vertical;
@@ -293,32 +326,54 @@ img {
293
326
  .noxion-post-card__meta {
294
327
  display: flex;
295
328
  align-items: center;
296
- gap: 0.75rem;
297
- margin-top: 0.75rem;
329
+ gap: 0.5rem;
330
+ margin-top: auto;
331
+ padding-top: 0.875rem;
332
+ }
333
+
334
+ .noxion-post-card__author {
335
+ font-size: 0.75rem;
336
+ font-weight: 500;
337
+ color: var(--noxion-mutedForeground);
338
+ letter-spacing: -0.01em;
339
+ }
340
+
341
+ .noxion-post-card__author + .noxion-post-card__date::before {
342
+ content: "\00b7";
343
+ margin-right: 0.375rem;
344
+ color: var(--noxion-border);
298
345
  }
299
346
 
300
347
  .noxion-post-card__date {
301
- font-size: 0.8125rem;
348
+ font-size: 0.75rem;
349
+ font-weight: 400;
302
350
  color: var(--noxion-mutedForeground);
351
+ letter-spacing: -0.01em;
303
352
  }
304
353
 
305
354
  .noxion-post-card__tags {
306
355
  display: flex;
307
356
  flex-wrap: wrap;
308
357
  gap: 0.375rem;
358
+ margin-top: 0.75rem;
309
359
  }
310
360
 
311
361
  .noxion-post-card__tag {
312
362
  font-size: 0.6875rem;
313
- padding: 0.125rem 0.5rem;
363
+ font-weight: 500;
364
+ padding: 0.1875rem 0.5rem;
314
365
  border-radius: 9999px;
315
366
  background-color: var(--noxion-muted);
316
367
  color: var(--noxion-mutedForeground);
317
- transition: color var(--noxion-transition-fast);
368
+ letter-spacing: 0;
369
+ transition:
370
+ color var(--noxion-transition-fast),
371
+ background-color var(--noxion-transition-fast);
318
372
  }
319
373
 
320
374
  .noxion-post-card:hover .noxion-post-card__tag {
321
375
  color: var(--noxion-foreground);
376
+ background-color: color-mix(in srgb, var(--noxion-muted) 80%, var(--noxion-foreground) 20%);
322
377
  }
323
378
 
324
379
  /* ============================================
@@ -327,8 +382,8 @@ img {
327
382
 
328
383
  .noxion-post-list {
329
384
  display: grid;
330
- grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
331
- gap: 1.5rem;
385
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
386
+ gap: 1.25rem;
332
387
  width: 100%;
333
388
  }
334
389
 
@@ -353,186 +408,1127 @@ img {
353
408
 
354
409
  .noxion-post-list--list .noxion-post-card:hover {
355
410
  box-shadow: none;
356
- transform: none;
357
- border-color: var(--noxion-mutedForeground);
411
+ border-bottom-color: color-mix(in srgb, var(--noxion-foreground) 25%, transparent);
358
412
  }
359
413
 
360
414
  .noxion-post-list--list .noxion-post-card__body {
361
- padding: 1.25rem 0;
415
+ padding: 1.125rem 0;
362
416
  }
363
417
 
364
- /* ============================================
365
- Search
366
- ============================================ */
418
+ /* ── POST PAGE (article detail) ── */
367
419
 
368
- .noxion-search {
369
- position: relative;
420
+ .noxion-template-post {
421
+ display: flex;
422
+ flex-direction: column;
423
+ align-items: center;
370
424
  width: 100%;
371
- max-width: 320px;
372
425
  }
373
426
 
374
- .noxion-search__input {
427
+ .noxion-template-post__cover {
375
428
  width: 100%;
376
- padding: 0.5rem 0.875rem;
377
- padding-right: 3.5rem;
378
- border-radius: var(--noxion-border-radius);
379
- border: 1px solid var(--noxion-border);
429
+ max-height: 480px;
430
+ overflow: hidden;
380
431
  background-color: var(--noxion-muted);
381
- color: var(--noxion-foreground);
382
- font-size: 0.875rem;
383
- font-family: inherit;
384
- outline: none;
385
- transition:
386
- border-color var(--noxion-transition-fast),
387
- background-color var(--noxion-transition-fast),
388
- box-shadow var(--noxion-transition-fast);
389
- }
390
-
391
- .noxion-search__input::placeholder {
392
- color: var(--noxion-mutedForeground);
393
- }
394
-
395
- .noxion-search__input:hover {
396
- border-color: var(--noxion-mutedForeground);
397
432
  }
398
433
 
399
- .noxion-search__input:focus {
400
- border-color: var(--noxion-primary);
401
- background-color: var(--noxion-background);
402
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--noxion-primary) 15%, transparent);
434
+ .noxion-template-post__cover-image {
435
+ display: block;
436
+ width: 100%;
437
+ height: 100%;
438
+ max-height: 480px;
439
+ object-fit: cover;
440
+ object-position: center;
403
441
  }
404
442
 
405
- .noxion-search__kbd {
406
- position: absolute;
407
- right: 0.5rem;
408
- top: 50%;
409
- transform: translateY(-50%);
410
- font-family: var(--noxion-font-sans);
411
- font-size: 0.6875rem;
412
- padding: 0.125rem 0.375rem;
413
- border-radius: 0.25rem;
414
- border: 1px solid var(--noxion-border);
415
- background-color: var(--noxion-background);
416
- color: var(--noxion-mutedForeground);
417
- pointer-events: none;
418
- line-height: 1;
443
+ .noxion-template-post__header {
444
+ display: flex;
445
+ flex-direction: column;
446
+ width: 100%;
447
+ max-width: var(--noxion-spacing-content, 720px);
448
+ margin: 0 auto;
449
+ padding: 2.5rem 1.25rem 0;
419
450
  }
420
451
 
421
- /* ============================================
422
- TagFilter
423
- ============================================ */
424
-
425
- .noxion-tag-filter {
452
+ .noxion-template-post__topics {
426
453
  display: flex;
427
454
  flex-wrap: wrap;
455
+ align-items: center;
428
456
  gap: 0.5rem;
457
+ margin-bottom: 1rem;
429
458
  }
430
459
 
431
- .noxion-tag-filter__tag {
432
- padding: 0.3125rem 0.75rem;
460
+ .noxion-template-post__category {
461
+ display: inline-block;
462
+ font-size: 0.75rem;
463
+ font-weight: 700;
464
+ letter-spacing: 0.06em;
465
+ text-transform: uppercase;
466
+ color: var(--noxion-primary);
467
+ }
468
+
469
+ .noxion-template-post__tag {
470
+ display: inline-block;
471
+ font-size: 0.6875rem;
472
+ font-weight: 500;
473
+ padding: 0.1875rem 0.625rem;
433
474
  border-radius: 9999px;
434
- border: 1px solid var(--noxion-border);
435
- background-color: transparent;
475
+ background-color: var(--noxion-muted);
436
476
  color: var(--noxion-mutedForeground);
437
- font-size: 0.8125rem;
438
- font-family: inherit;
439
- cursor: pointer;
477
+ text-decoration: none;
440
478
  transition:
441
- color var(--noxion-transition-fast),
442
- border-color var(--noxion-transition-fast),
443
- background-color var(--noxion-transition-fast);
444
- outline: none;
479
+ color var(--noxion-transition-fast, 100ms ease),
480
+ background-color var(--noxion-transition-fast, 100ms ease);
445
481
  }
446
482
 
447
- .noxion-tag-filter__tag:hover {
483
+ .noxion-template-post__tag:hover {
448
484
  color: var(--noxion-foreground);
449
- border-color: var(--noxion-foreground);
485
+ background-color: color-mix(in srgb, var(--noxion-muted) 70%, var(--noxion-foreground) 30%);
450
486
  }
451
487
 
452
- .noxion-tag-filter__tag:focus-visible {
453
- box-shadow: 0 0 0 2px var(--noxion-primary);
488
+ .noxion-template-post__title {
489
+ margin: 0;
490
+ font-size: 2.5rem;
491
+ font-weight: 700;
492
+ line-height: 1.15;
493
+ letter-spacing: -0.03em;
494
+ color: var(--noxion-foreground);
495
+ word-break: keep-all;
496
+ overflow-wrap: break-word;
454
497
  }
455
498
 
456
- .noxion-tag-filter__tag--selected {
457
- background-color: var(--noxion-foreground);
458
- color: var(--noxion-background);
459
- border-color: var(--noxion-foreground);
499
+ .noxion-template-post__description {
500
+ margin: 1rem 0 0;
501
+ font-size: 1.1875rem;
502
+ font-weight: 400;
503
+ line-height: 1.55;
504
+ color: var(--noxion-mutedForeground);
505
+ letter-spacing: -0.01em;
460
506
  }
461
507
 
462
- .noxion-tag-filter__tag--selected:hover {
463
- opacity: 0.85;
464
- color: var(--noxion-background);
465
- border-color: var(--noxion-foreground);
508
+ .noxion-template-post__meta {
509
+ display: flex;
510
+ align-items: center;
511
+ margin-top: 1.5rem;
512
+ padding-top: 1.25rem;
513
+ border-top: 1px solid var(--noxion-border);
514
+ font-size: 0.875rem;
515
+ color: var(--noxion-mutedForeground);
466
516
  }
467
517
 
468
- /* ============================================
469
- TOC
470
- ============================================ */
518
+ .noxion-template-post__author {
519
+ font-weight: 600;
520
+ color: var(--noxion-foreground);
521
+ }
471
522
 
472
- .noxion-toc {
473
- padding: 1rem 0;
474
- font-size: 0.8125rem;
523
+ .noxion-template-post__meta-dot {
524
+ display: inline-block;
525
+ width: 3px;
526
+ height: 3px;
527
+ border-radius: 50%;
528
+ background-color: var(--noxion-mutedForeground);
529
+ margin: 0 0.625rem;
530
+ flex-shrink: 0;
475
531
  }
476
532
 
477
- .noxion-toc__heading {
478
- font-size: 0.6875rem;
479
- font-weight: 600;
480
- text-transform: uppercase;
481
- letter-spacing: 0.08em;
533
+ .noxion-template-post__date {
534
+ font-weight: 400;
482
535
  color: var(--noxion-mutedForeground);
483
- margin-bottom: 0.875rem;
536
+ letter-spacing: -0.01em;
484
537
  }
485
538
 
486
- .noxion-toc__list {
487
- list-style: none;
488
- padding: 0;
489
- margin: 0;
490
- border-left: 1px solid var(--noxion-border);
539
+ .noxion-template-post__body {
540
+ width: 100%;
541
+ max-width: var(--noxion-spacing-content, 720px);
542
+ margin: 0 auto;
543
+ padding: 2rem 1.25rem calc(max(10vh, 100px));
491
544
  }
492
545
 
493
- .noxion-toc__item {
494
- margin-bottom: 0.125rem;
546
+ .noxion-template-post__body .noxion-page--inline {
547
+ padding: 0;
495
548
  }
496
549
 
497
- .noxion-toc__link {
498
- display: block;
499
- padding: 0.25rem 0 0.25rem 0.875rem;
500
- margin-left: -1px;
501
- border-left: 2px solid transparent;
502
- color: var(--noxion-mutedForeground);
503
- text-decoration: none;
504
- line-height: 1.4;
505
- transition:
506
- color var(--noxion-transition-fast),
507
- border-color var(--noxion-transition-fast);
508
- }
550
+ @media (max-width: 768px) {
551
+ .noxion-template-post__header {
552
+ padding: 2rem 1rem 0;
553
+ }
509
554
 
510
- .noxion-toc__link:hover {
511
- color: var(--noxion-foreground);
512
- }
555
+ .noxion-template-post__title {
556
+ font-size: 1.875rem;
557
+ line-height: 1.2;
558
+ }
513
559
 
514
- .noxion-toc__item--active > .noxion-toc__link {
515
- color: var(--noxion-foreground);
516
- border-left-color: var(--noxion-foreground);
517
- font-weight: 500;
560
+ .noxion-template-post__description {
561
+ font-size: 1.0625rem;
562
+ }
563
+
564
+ .noxion-template-post__meta {
565
+ margin-top: 1.25rem;
566
+ padding-top: 1rem;
567
+ }
568
+
569
+ .noxion-template-post__body {
570
+ padding: 1.5rem 1rem calc(max(8vh, 80px));
571
+ }
572
+
573
+ .noxion-template-post__cover {
574
+ max-height: 320px;
575
+ }
576
+
577
+ .noxion-template-post__cover-image {
578
+ max-height: 320px;
579
+ }
518
580
  }
519
581
 
520
- /* ============================================
521
- ThemeToggle
522
- ============================================ */
582
+ @media (max-width: 480px) {
583
+ .noxion-template-post__header {
584
+ padding: 1.5rem 1rem 0;
585
+ }
523
586
 
524
- .noxion-theme-toggle {
525
- display: inline-flex;
526
- align-items: center;
587
+ .noxion-template-post__title {
588
+ font-size: 1.625rem;
589
+ }
590
+
591
+ .noxion-template-post__description {
592
+ font-size: 1rem;
593
+ }
594
+
595
+ .noxion-template-post__meta {
596
+ flex-wrap: wrap;
597
+ gap: 0.25rem;
598
+ }
599
+
600
+ .noxion-template-post__cover {
601
+ max-height: 240px;
602
+ }
603
+
604
+ .noxion-template-post__cover-image {
605
+ max-height: 240px;
606
+ }
607
+ }
608
+
609
+ .noxion-template-post .noxion-page__title {
610
+ font-family: var(--noxion-font-sans);
611
+ letter-spacing: -0.02em;
612
+ }
613
+
614
+ .noxion-template-post .noxion-heading {
615
+ font-family: var(--noxion-font-sans);
616
+ }
617
+
618
+ .noxion-template-post .noxion-quote {
619
+ border-color: var(--noxion-border);
620
+ color: var(--noxion-mutedForeground);
621
+ }
622
+
623
+ .noxion-template-post .noxion-divider {
624
+ border-color: var(--noxion-border);
625
+ }
626
+
627
+ .noxion-template-post .noxion-callout {
628
+ border-color: var(--noxion-border);
629
+ background-color: var(--noxion-muted);
630
+ }
631
+
632
+ .noxion-template-post .noxion-code {
633
+ border: 1px solid var(--noxion-border);
634
+ }
635
+
636
+ .noxion-template-post .noxion-inline-code {
637
+ border-radius: var(--noxion-border-radius, 3px);
638
+ }
639
+
640
+ .noxion-template-post .noxion-link {
641
+ border-color: color-mix(in srgb, var(--noxion-primary) 40%, transparent);
642
+ }
643
+
644
+ .noxion-template-post .noxion-link:hover {
645
+ border-color: var(--noxion-primary);
646
+ }
647
+
648
+ /* ============================================
649
+ FeaturedPostCard
650
+ ============================================ */
651
+
652
+ .noxion-featured-card {
653
+ display: block;
654
+ position: relative;
655
+ text-decoration: none;
656
+ color: inherit;
657
+ border-radius: var(--noxion-border-radius);
658
+ overflow: hidden;
659
+ min-height: 360px;
660
+ }
661
+
662
+ .noxion-featured-card__cover {
663
+ position: absolute;
664
+ inset: 0;
665
+ overflow: hidden;
666
+ background-color: var(--noxion-foreground);
667
+ }
668
+
669
+ .noxion-featured-card__cover-image {
670
+ width: 100%;
671
+ height: 100%;
672
+ object-fit: cover;
673
+ object-position: center;
674
+ transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1);
675
+ }
676
+
677
+ .noxion-featured-card:hover .noxion-featured-card__cover-image {
678
+ transform: scale(1.03);
679
+ }
680
+
681
+ .noxion-featured-card__cover-overlay {
682
+ position: absolute;
683
+ inset: 0;
684
+ background: linear-gradient(
685
+ to top,
686
+ rgba(0, 0, 0, 0.7) 0%,
687
+ rgba(0, 0, 0, 0.35) 40%,
688
+ rgba(0, 0, 0, 0.1) 100%
689
+ );
690
+ pointer-events: none;
691
+ }
692
+
693
+ .noxion-featured-card--no-cover .noxion-featured-card__cover {
694
+ background-color: var(--noxion-foreground);
695
+ }
696
+
697
+ .noxion-featured-card__content {
698
+ position: relative;
699
+ z-index: 1;
700
+ display: flex;
701
+ flex-direction: column;
702
+ justify-content: flex-end;
703
+ min-height: 360px;
704
+ padding: 2rem;
705
+ gap: 0.5rem;
706
+ color: #ffffff;
707
+ }
708
+
709
+ .noxion-featured-card__category {
710
+ display: inline-block;
711
+ font-size: 0.6875rem;
712
+ font-weight: 700;
713
+ letter-spacing: 0.06em;
714
+ text-transform: uppercase;
715
+ color: rgba(255, 255, 255, 0.8);
716
+ }
717
+
718
+ .noxion-featured-card__title {
719
+ margin: 0;
720
+ font-size: 1.75rem;
721
+ font-weight: 700;
722
+ line-height: 1.2;
723
+ letter-spacing: -0.025em;
724
+ color: #ffffff;
725
+ }
726
+
727
+ @media (min-width: 769px) {
728
+ .noxion-featured-card__title {
729
+ font-size: 2.25rem;
730
+ }
731
+ }
732
+
733
+ .noxion-featured-card__description {
734
+ margin: 0;
735
+ font-size: 0.9375rem;
736
+ line-height: 1.55;
737
+ color: rgba(255, 255, 255, 0.8);
738
+ display: -webkit-box;
739
+ -webkit-line-clamp: 2;
740
+ -webkit-box-orient: vertical;
741
+ overflow: hidden;
742
+ }
743
+
744
+ .noxion-featured-card__meta {
745
+ display: flex;
746
+ align-items: center;
747
+ gap: 0.5rem;
748
+ margin-top: 0.25rem;
749
+ font-size: 0.8125rem;
750
+ color: rgba(255, 255, 255, 0.6);
751
+ }
752
+
753
+ .noxion-featured-card__author + .noxion-featured-card__date::before {
754
+ content: "\00b7";
755
+ margin-right: 0.5rem;
756
+ }
757
+
758
+ .noxion-featured-card__tags {
759
+ display: flex;
760
+ flex-wrap: wrap;
761
+ gap: 0.375rem;
762
+ margin-top: 0.25rem;
763
+ }
764
+
765
+ .noxion-featured-card__tag {
766
+ font-size: 0.6875rem;
767
+ color: rgba(255, 255, 255, 0.6);
768
+ background-color: rgba(255, 255, 255, 0.15);
769
+ padding: 0.125rem 0.5rem;
770
+ border-radius: 9999px;
771
+ letter-spacing: 0.01em;
772
+ }
773
+
774
+ @media (max-width: 768px) {
775
+ .noxion-featured-card {
776
+ min-height: 280px;
777
+ }
778
+
779
+ .noxion-featured-card__content {
780
+ min-height: 280px;
781
+ padding: 1.5rem;
782
+ }
783
+
784
+ .noxion-featured-card__title {
785
+ font-size: 1.5rem;
786
+ }
787
+
788
+ .noxion-featured-card__description {
789
+ font-size: 0.875rem;
790
+ -webkit-line-clamp: 2;
791
+ }
792
+ }
793
+
794
+ @media (max-width: 640px) {
795
+ .noxion-featured-card {
796
+ min-height: 240px;
797
+ }
798
+
799
+ .noxion-featured-card__content {
800
+ min-height: 240px;
801
+ padding: 1.25rem;
802
+ gap: 0.375rem;
803
+ }
804
+
805
+ .noxion-featured-card__title {
806
+ font-size: 1.25rem;
807
+ }
808
+
809
+ .noxion-featured-card__description {
810
+ font-size: 0.8125rem;
811
+ -webkit-line-clamp: 1;
812
+ }
813
+
814
+ .noxion-featured-card__meta {
815
+ font-size: 0.75rem;
816
+ }
817
+
818
+ .noxion-featured-card__tags {
819
+ display: none;
820
+ }
821
+ }
822
+
823
+ /* ============================================
824
+ Home Page
825
+ ============================================ */
826
+
827
+ .noxion-template-home {
828
+ display: flex;
829
+ flex-direction: column;
830
+ gap: 3rem;
831
+ }
832
+
833
+ .noxion-home-hero {
834
+ display: flex;
835
+ flex-direction: column;
836
+ gap: 1.25rem;
837
+ width: 100vw;
838
+ margin-left: calc(-50vw + 50%);
839
+ padding: 0 1.25rem;
840
+ }
841
+
842
+ @media (max-width: 768px) {
843
+ .noxion-home-hero {
844
+ gap: 1rem;
845
+ padding: 0 1rem;
846
+ }
847
+
848
+ .noxion-home-hero__secondary {
849
+ grid-template-columns: 1fr 1fr;
850
+ }
851
+ }
852
+
853
+ @media (max-width: 640px) {
854
+ .noxion-home-hero {
855
+ gap: 0.75rem;
856
+ padding: 0;
857
+ }
858
+
859
+ .noxion-featured-card {
860
+ border-radius: 0;
861
+ }
862
+
863
+ .noxion-home-hero__secondary {
864
+ grid-template-columns: 1fr;
865
+ gap: 0.75rem;
866
+ padding: 0 0.75rem;
867
+ }
868
+
869
+ .noxion-template-home {
870
+ gap: 2rem;
871
+ }
872
+ }
873
+
874
+ .noxion-home-hero__secondary {
875
+ display: grid;
876
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
877
+ gap: 1.25rem;
878
+ }
879
+
880
+ .noxion-home-feed__title {
881
+ font-size: 0.6875rem;
882
+ font-weight: 600;
883
+ text-transform: uppercase;
884
+ letter-spacing: 0.06em;
885
+ color: var(--noxion-mutedForeground);
886
+ margin: 0 0 1.25rem;
887
+ padding-bottom: 0.75rem;
888
+ border-bottom: 1px solid var(--noxion-border);
889
+ }
890
+
891
+ .noxion-home-feed__toolbar {
892
+ display: flex;
893
+ flex-direction: column;
894
+ gap: 1rem;
895
+ margin-bottom: 2rem;
896
+ }
897
+
898
+ .noxion-loading-spinner {
899
+ display: flex;
900
+ justify-content: center;
901
+ padding: 2rem 0;
902
+ }
903
+
904
+ .noxion-loading-spinner__ring {
905
+ width: 24px;
906
+ height: 24px;
907
+ border: 2px solid var(--noxion-border, #e5e5e5);
908
+ border-top-color: var(--noxion-foreground, #171717);
909
+ border-radius: 50%;
910
+ animation: noxion-spin 0.6s linear infinite;
911
+ }
912
+
913
+ @keyframes noxion-spin {
914
+ to { transform: rotate(360deg); }
915
+ }
916
+
917
+ /* ============================================
918
+ Tag Page Template
919
+ ============================================ */
920
+
921
+ .noxion-template-tag {
922
+ display: flex;
923
+ flex-direction: column;
924
+ gap: 2rem;
925
+ }
926
+
927
+ .noxion-template-tag__title {
928
+ font-size: 1.5rem;
929
+ font-weight: 600;
930
+ letter-spacing: -0.02em;
931
+ color: var(--noxion-mutedForeground);
932
+ }
933
+
934
+ /* ============================================
935
+ Archive Page Template
936
+ ============================================ */
937
+
938
+ .noxion-template-archive {
939
+ display: flex;
940
+ flex-direction: column;
941
+ gap: 2rem;
942
+ }
943
+
944
+ .noxion-template-archive__title {
945
+ font-size: 1.5rem;
946
+ font-weight: 700;
947
+ letter-spacing: -0.02em;
948
+ color: var(--noxion-foreground);
949
+ }
950
+
951
+ /* ============================================
952
+ Search
953
+ ============================================ */
954
+
955
+ .noxion-search {
956
+ position: relative;
957
+ width: 100%;
958
+ max-width: 280px;
959
+ display: flex;
960
+ align-items: center;
961
+ }
962
+
963
+ .noxion-search__icon {
964
+ position: absolute;
965
+ left: 0.625rem;
966
+ top: 50%;
967
+ transform: translateY(-50%);
968
+ color: var(--noxion-mutedForeground);
969
+ pointer-events: none;
970
+ display: flex;
971
+ align-items: center;
972
+ transition: color var(--noxion-transition-fast);
973
+ }
974
+
975
+ .noxion-search:focus-within .noxion-search__icon {
976
+ color: var(--noxion-foreground);
977
+ }
978
+
979
+ .noxion-search__input {
980
+ width: 100%;
981
+ padding: 0.4375rem 3rem 0.4375rem 2.125rem;
982
+ border-radius: 0.375rem;
983
+ border: 1px solid var(--noxion-border);
984
+ background-color: var(--noxion-accent);
985
+ color: var(--noxion-foreground);
986
+ font-size: 0.8125rem;
987
+ font-family: inherit;
988
+ outline: none;
989
+ transition:
990
+ border-color var(--noxion-transition-fast),
991
+ background-color var(--noxion-transition-fast),
992
+ box-shadow var(--noxion-transition-fast);
993
+ }
994
+
995
+ .noxion-search__input::placeholder {
996
+ color: var(--noxion-mutedForeground);
997
+ }
998
+
999
+ .noxion-search__input:hover {
1000
+ border-color: color-mix(in srgb, var(--noxion-foreground) 30%, transparent);
1001
+ }
1002
+
1003
+ .noxion-search__input:focus {
1004
+ border-color: var(--noxion-primary);
1005
+ background-color: var(--noxion-background);
1006
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--noxion-primary) 10%, transparent);
1007
+ }
1008
+
1009
+ .noxion-search__kbd {
1010
+ position: absolute;
1011
+ right: 0.5rem;
1012
+ top: 50%;
1013
+ transform: translateY(-50%);
1014
+ font-family: var(--noxion-font-sans);
1015
+ font-size: 0.625rem;
1016
+ font-weight: 500;
1017
+ padding: 0.125rem 0.3125rem;
1018
+ border-radius: 0.25rem;
1019
+ border: 1px solid var(--noxion-border);
1020
+ background-color: var(--noxion-background);
1021
+ color: var(--noxion-mutedForeground);
1022
+ pointer-events: none;
1023
+ line-height: 1.4;
1024
+ letter-spacing: 0.02em;
1025
+ }
1026
+
1027
+ /* ============================================
1028
+ TagFilter
1029
+ ============================================ */
1030
+
1031
+ .noxion-tag-filter {
1032
+ display: flex;
1033
+ flex-wrap: wrap;
1034
+ gap: 0.375rem;
1035
+ }
1036
+
1037
+ .noxion-tag-filter__tag {
1038
+ padding: 0.3125rem 0.75rem;
1039
+ border-radius: 9999px;
1040
+ border: 1px solid var(--noxion-border);
1041
+ background-color: transparent;
1042
+ color: var(--noxion-mutedForeground);
1043
+ font-size: 0.8125rem;
1044
+ font-weight: 450;
1045
+ font-family: inherit;
1046
+ cursor: pointer;
1047
+ letter-spacing: -0.01em;
1048
+ transition:
1049
+ color var(--noxion-transition-fast),
1050
+ border-color var(--noxion-transition-fast),
1051
+ background-color var(--noxion-transition-fast);
1052
+ outline: none;
1053
+ }
1054
+
1055
+ .noxion-tag-filter__tag:hover {
1056
+ color: var(--noxion-foreground);
1057
+ border-color: color-mix(in srgb, var(--noxion-foreground) 35%, transparent);
1058
+ background-color: var(--noxion-accent);
1059
+ }
1060
+
1061
+ .noxion-tag-filter__tag:focus-visible {
1062
+ box-shadow: 0 0 0 2px var(--noxion-primary);
1063
+ }
1064
+
1065
+ .noxion-tag-filter__tag--selected {
1066
+ background-color: var(--noxion-foreground);
1067
+ color: var(--noxion-background);
1068
+ border-color: var(--noxion-foreground);
1069
+ }
1070
+
1071
+ .noxion-tag-filter__tag--selected:hover {
1072
+ opacity: 0.82;
1073
+ color: var(--noxion-background);
1074
+ border-color: var(--noxion-foreground);
1075
+ background-color: var(--noxion-foreground);
1076
+ }
1077
+
1078
+ .noxion-tag-filter__tag--more {
1079
+ color: var(--noxion-mutedForeground);
1080
+ border-style: dashed;
1081
+ letter-spacing: 0;
1082
+ }
1083
+
1084
+ .noxion-tag-filter__tag--more:hover {
1085
+ background-color: var(--noxion-accent);
1086
+ border-style: dashed;
1087
+ border-color: color-mix(in srgb, var(--noxion-foreground) 35%, transparent);
1088
+ color: var(--noxion-foreground);
1089
+ }
1090
+
1091
+ /* ============================================
1092
+ TOC
1093
+ ============================================ */
1094
+
1095
+ .noxion-toc {
1096
+ padding: 1rem 0;
1097
+ font-size: 0.8125rem;
1098
+ }
1099
+
1100
+ .noxion-toc__heading {
1101
+ font-size: 0.625rem;
1102
+ font-weight: 600;
1103
+ text-transform: uppercase;
1104
+ letter-spacing: 0.1em;
1105
+ color: var(--noxion-mutedForeground);
1106
+ margin-bottom: 0.75rem;
1107
+ }
1108
+
1109
+ .noxion-toc__list {
1110
+ list-style: none;
1111
+ padding: 0;
1112
+ margin: 0;
1113
+ border-left: 1px solid var(--noxion-border);
1114
+ }
1115
+
1116
+ .noxion-toc__item {
1117
+ margin-bottom: 0;
1118
+ }
1119
+
1120
+ .noxion-toc__link {
1121
+ display: block;
1122
+ padding: 0.25rem 0 0.25rem 0.875rem;
1123
+ margin-left: -1px;
1124
+ border-left: 2px solid transparent;
1125
+ color: var(--noxion-mutedForeground);
1126
+ text-decoration: none;
1127
+ line-height: 1.45;
1128
+ font-size: 0.8125rem;
1129
+ letter-spacing: -0.01em;
1130
+ transition:
1131
+ color var(--noxion-transition-fast),
1132
+ border-color var(--noxion-transition-fast);
1133
+ }
1134
+
1135
+ .noxion-toc__link:hover {
1136
+ color: var(--noxion-foreground);
1137
+ }
1138
+
1139
+ .noxion-toc__item--active > .noxion-toc__link {
1140
+ color: var(--noxion-foreground);
1141
+ border-left-color: var(--noxion-foreground);
1142
+ font-weight: 500;
1143
+ }
1144
+
1145
+ /* ============================================
1146
+ ThemeToggle
1147
+ ============================================ */
1148
+
1149
+ .noxion-theme-toggle {
1150
+ display: inline-flex;
1151
+ align-items: center;
527
1152
  justify-content: center;
528
- width: 2rem;
529
- height: 2rem;
1153
+ width: 1.875rem;
1154
+ height: 1.875rem;
1155
+ border-radius: 0.375rem;
1156
+ border: none;
1157
+ background-color: transparent;
1158
+ cursor: pointer;
1159
+ color: var(--noxion-mutedForeground);
1160
+ transition:
1161
+ color var(--noxion-transition-fast),
1162
+ background-color var(--noxion-transition-fast);
1163
+ outline: none;
1164
+ padding: 0;
1165
+ }
1166
+
1167
+ .noxion-theme-toggle:hover {
1168
+ color: var(--noxion-foreground);
1169
+ background-color: var(--noxion-muted);
1170
+ }
1171
+
1172
+ .noxion-theme-toggle:focus-visible {
1173
+ box-shadow: 0 0 0 2px var(--noxion-primary);
1174
+ }
1175
+
1176
+ /* ============================================
1177
+ EmptyState
1178
+ ============================================ */
1179
+
1180
+ .noxion-empty-state {
1181
+ display: flex;
1182
+ flex-direction: column;
1183
+ align-items: center;
1184
+ justify-content: center;
1185
+ padding: 5rem 1rem;
1186
+ text-align: center;
1187
+ gap: 0.5rem;
1188
+ }
1189
+
1190
+ .noxion-empty-state__icon {
1191
+ color: var(--noxion-mutedForeground);
1192
+ margin-bottom: 0.75rem;
1193
+ opacity: 0.5;
1194
+ }
1195
+
1196
+ .noxion-empty-state__title {
1197
+ font-size: 1.0625rem;
1198
+ font-weight: 600;
1199
+ color: var(--noxion-foreground);
1200
+ margin: 0;
1201
+ letter-spacing: -0.02em;
1202
+ }
1203
+
1204
+ .noxion-empty-state__message {
1205
+ font-size: 0.875rem;
1206
+ color: var(--noxion-mutedForeground);
1207
+ margin: 0;
1208
+ max-width: 340px;
1209
+ line-height: 1.55;
1210
+ }
1211
+
1212
+ /* ============================================
1213
+ Layout
1214
+ ============================================ */
1215
+
1216
+ .noxion-layout {
1217
+ display: flex;
1218
+ flex-direction: column;
1219
+ min-height: 100vh;
1220
+ background-color: var(--noxion-background);
1221
+ }
1222
+
1223
+ .noxion-layout__header {
1224
+ flex-shrink: 0;
1225
+ }
1226
+
1227
+ .noxion-layout__content {
1228
+ flex: 1;
1229
+ width: 100%;
1230
+ max-width: var(--noxion-spacing-content);
1231
+ margin: 0 auto;
1232
+ padding: 2.5rem 1.25rem;
1233
+ }
1234
+
1235
+ @media (max-width: 640px) {
1236
+ .noxion-layout__content {
1237
+ padding: 1.5rem 1rem;
1238
+ }
1239
+ }
1240
+
1241
+ .noxion-layout__footer {
1242
+ flex-shrink: 0;
1243
+ margin-top: auto;
1244
+ }
1245
+
1246
+ .noxion-layout__sidebar {
1247
+ width: var(--noxion-spacing-sidebar);
1248
+ flex-shrink: 0;
1249
+ padding: 2.5rem 1.5rem;
1250
+ border-right: 1px solid var(--noxion-border);
1251
+ }
1252
+
1253
+ .noxion-layout__hero {
1254
+ width: 100%;
1255
+ }
1256
+
1257
+ .noxion-layout--single-column {
1258
+ flex-direction: column;
1259
+ }
1260
+
1261
+ .noxion-layout--sidebar-left > .noxion-layout__main {
1262
+ display: flex;
1263
+ flex: 1;
1264
+ }
1265
+
1266
+ .noxion-layout--sidebar-left > .noxion-layout__main > .noxion-layout__sidebar {
1267
+ order: -1;
1268
+ border-right: 1px solid var(--noxion-border);
1269
+ border-left: none;
1270
+ }
1271
+
1272
+ .noxion-layout--sidebar-right > .noxion-layout__main {
1273
+ display: flex;
1274
+ flex: 1;
1275
+ }
1276
+
1277
+ .noxion-layout--sidebar-right > .noxion-layout__main > .noxion-layout__sidebar {
1278
+ border-left: 1px solid var(--noxion-border);
1279
+ border-right: none;
1280
+ }
1281
+
1282
+ @media (max-width: 768px) {
1283
+ .noxion-layout__sidebar {
1284
+ width: 100%;
1285
+ border-right: none;
1286
+ border-bottom: 1px solid var(--noxion-border);
1287
+ padding: 1.5rem 1rem;
1288
+ }
1289
+
1290
+ .noxion-layout--sidebar-left > .noxion-layout__main,
1291
+ .noxion-layout--sidebar-right > .noxion-layout__main {
1292
+ flex-direction: column;
1293
+ }
1294
+
1295
+ .noxion-layout--sidebar-left > .noxion-layout__main > .noxion-layout__sidebar,
1296
+ .noxion-layout--sidebar-right > .noxion-layout__main > .noxion-layout__sidebar {
1297
+ border-left: none;
1298
+ border-right: none;
1299
+ }
1300
+ }
1301
+
1302
+ /* ============================================
1303
+ PortfolioGrid
1304
+ ============================================ */
1305
+
1306
+ .noxion-template-portfolio-grid {
1307
+ width: 100%;
1308
+ }
1309
+
1310
+ .noxion-portfolio-grid {
1311
+ display: grid;
1312
+ grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
1313
+ gap: 1.5rem;
1314
+ width: 100%;
1315
+ }
1316
+
1317
+ @media (max-width: 640px) {
1318
+ .noxion-portfolio-grid {
1319
+ grid-template-columns: 1fr;
1320
+ gap: 1rem;
1321
+ }
1322
+ }
1323
+
1324
+ /* ============================================
1325
+ PortfolioProjectCard
1326
+ ============================================ */
1327
+
1328
+ .noxion-portfolio-card {
1329
+ display: flex;
1330
+ flex-direction: column;
530
1331
  border-radius: var(--noxion-border-radius);
1332
+ overflow: hidden;
1333
+ background-color: var(--noxion-card);
1334
+ border: 1px solid var(--noxion-border);
1335
+ transition:
1336
+ border-color var(--noxion-transition-normal),
1337
+ box-shadow var(--noxion-transition-normal),
1338
+ transform var(--noxion-transition-normal);
1339
+ }
1340
+
1341
+ .noxion-portfolio-card:hover {
1342
+ border-color: color-mix(in srgb, var(--noxion-foreground) 20%, transparent);
1343
+ box-shadow: var(--noxion-shadow-lg);
1344
+ transform: translateY(-2px);
1345
+ }
1346
+
1347
+ .noxion-portfolio-card--featured {
1348
+ grid-column: 1 / -1;
1349
+ }
1350
+
1351
+ .noxion-portfolio-card--no-cover .noxion-portfolio-card__cover {
1352
+ aspect-ratio: 3 / 1;
1353
+ }
1354
+
1355
+ @media (min-width: 769px) {
1356
+ .noxion-portfolio-card--featured {
1357
+ flex-direction: row;
1358
+ }
1359
+
1360
+ .noxion-portfolio-card--featured .noxion-portfolio-card__cover {
1361
+ width: 50%;
1362
+ aspect-ratio: auto;
1363
+ min-height: 260px;
1364
+ }
1365
+
1366
+ .noxion-portfolio-card--featured .noxion-portfolio-card__body {
1367
+ flex: 1;
1368
+ justify-content: center;
1369
+ }
1370
+ }
1371
+
1372
+ .noxion-portfolio-card__cover {
1373
+ position: relative;
1374
+ width: 100%;
1375
+ aspect-ratio: 16 / 10;
1376
+ overflow: hidden;
1377
+ background-color: var(--noxion-muted);
1378
+ }
1379
+
1380
+ .noxion-portfolio-card__cover-image {
1381
+ width: 100%;
1382
+ height: 100%;
1383
+ object-fit: cover;
1384
+ object-position: center;
1385
+ transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
1386
+ }
1387
+
1388
+ .noxion-portfolio-card:hover .noxion-portfolio-card__cover-image {
1389
+ transform: scale(1.04);
1390
+ }
1391
+
1392
+ .noxion-portfolio-card__body {
1393
+ display: flex;
1394
+ flex-direction: column;
1395
+ flex: 1;
1396
+ padding: 1.25rem;
1397
+ gap: 0;
1398
+ }
1399
+
1400
+ .noxion-portfolio-card__header {
1401
+ display: flex;
1402
+ align-items: baseline;
1403
+ justify-content: space-between;
1404
+ gap: 0.75rem;
1405
+ margin-bottom: 0.375rem;
1406
+ }
1407
+
1408
+ .noxion-portfolio-card__title-link {
1409
+ text-decoration: none;
1410
+ color: inherit;
1411
+ }
1412
+
1413
+ .noxion-portfolio-card__title {
1414
+ margin: 0;
1415
+ font-size: 1.0625rem;
1416
+ font-weight: 600;
1417
+ color: var(--noxion-cardForeground);
1418
+ line-height: 1.4;
1419
+ letter-spacing: -0.02em;
1420
+ }
1421
+
1422
+ .noxion-portfolio-card__title-link:hover .noxion-portfolio-card__title {
1423
+ color: var(--noxion-primary);
1424
+ }
1425
+
1426
+ .noxion-portfolio-card__year {
1427
+ font-size: 0.75rem;
1428
+ font-weight: 500;
1429
+ color: var(--noxion-mutedForeground);
1430
+ white-space: nowrap;
1431
+ letter-spacing: -0.01em;
1432
+ }
1433
+
1434
+ .noxion-portfolio-card__description {
1435
+ margin: 0.375rem 0 0;
1436
+ font-size: 0.8125rem;
1437
+ color: var(--noxion-mutedForeground);
1438
+ line-height: 1.6;
1439
+ display: -webkit-box;
1440
+ -webkit-line-clamp: 3;
1441
+ -webkit-box-orient: vertical;
1442
+ overflow: hidden;
1443
+ }
1444
+
1445
+ .noxion-portfolio-card__tech {
1446
+ display: flex;
1447
+ flex-wrap: wrap;
1448
+ gap: 0.375rem;
1449
+ margin-top: 0.75rem;
1450
+ }
1451
+
1452
+ .noxion-portfolio-card__tech-tag {
1453
+ font-size: 0.6875rem;
1454
+ font-weight: 500;
1455
+ padding: 0.1875rem 0.5rem;
1456
+ border-radius: 9999px;
1457
+ background-color: var(--noxion-muted);
1458
+ color: var(--noxion-mutedForeground);
1459
+ letter-spacing: 0;
1460
+ transition:
1461
+ color var(--noxion-transition-fast),
1462
+ background-color var(--noxion-transition-fast);
1463
+ }
1464
+
1465
+ .noxion-portfolio-card:hover .noxion-portfolio-card__tech-tag {
1466
+ color: var(--noxion-foreground);
1467
+ background-color: color-mix(in srgb, var(--noxion-muted) 80%, var(--noxion-foreground) 20%);
1468
+ }
1469
+
1470
+ .noxion-portfolio-card__actions {
1471
+ display: flex;
1472
+ align-items: center;
1473
+ gap: 0.75rem;
1474
+ margin-top: auto;
1475
+ padding-top: 1rem;
1476
+ }
1477
+
1478
+ .noxion-portfolio-card__link {
1479
+ font-size: 0.8125rem;
1480
+ font-weight: 500;
1481
+ color: var(--noxion-foreground);
1482
+ text-decoration: none;
1483
+ padding: 0.375rem 0.875rem;
1484
+ border-radius: 0.375rem;
1485
+ border: 1px solid var(--noxion-border);
1486
+ background-color: transparent;
1487
+ transition:
1488
+ color var(--noxion-transition-fast),
1489
+ border-color var(--noxion-transition-fast),
1490
+ background-color var(--noxion-transition-fast);
1491
+ }
1492
+
1493
+ .noxion-portfolio-card__link:hover {
1494
+ background-color: var(--noxion-accent);
1495
+ border-color: color-mix(in srgb, var(--noxion-foreground) 30%, transparent);
1496
+ }
1497
+
1498
+ .noxion-portfolio-card__link--external {
1499
+ background-color: var(--noxion-foreground);
1500
+ color: var(--noxion-background);
1501
+ border-color: var(--noxion-foreground);
1502
+ }
1503
+
1504
+ .noxion-portfolio-card__link--external:hover {
1505
+ opacity: 0.82;
1506
+ background-color: var(--noxion-foreground);
1507
+ color: var(--noxion-background);
1508
+ border-color: var(--noxion-foreground);
1509
+ }
1510
+
1511
+ /* ============================================
1512
+ PortfolioFilter
1513
+ ============================================ */
1514
+
1515
+ .noxion-portfolio-filter {
1516
+ display: flex;
1517
+ flex-wrap: wrap;
1518
+ gap: 0.375rem;
1519
+ }
1520
+
1521
+ .noxion-portfolio-filter__tag {
1522
+ padding: 0.3125rem 0.75rem;
1523
+ border-radius: 9999px;
531
1524
  border: 1px solid var(--noxion-border);
532
1525
  background-color: transparent;
533
- cursor: pointer;
534
- font-size: 0.875rem;
535
1526
  color: var(--noxion-mutedForeground);
1527
+ font-size: 0.8125rem;
1528
+ font-weight: 450;
1529
+ font-family: inherit;
1530
+ cursor: pointer;
1531
+ letter-spacing: -0.01em;
536
1532
  transition:
537
1533
  color var(--noxion-transition-fast),
538
1534
  border-color var(--noxion-transition-fast),
@@ -540,130 +1536,280 @@ img {
540
1536
  outline: none;
541
1537
  }
542
1538
 
543
- .noxion-theme-toggle:hover {
1539
+ .noxion-portfolio-filter__tag:hover {
544
1540
  color: var(--noxion-foreground);
545
- border-color: var(--noxion-foreground);
546
- background-color: var(--noxion-muted);
1541
+ border-color: color-mix(in srgb, var(--noxion-foreground) 35%, transparent);
1542
+ background-color: var(--noxion-accent);
547
1543
  }
548
1544
 
549
- .noxion-theme-toggle:focus-visible {
1545
+ .noxion-portfolio-filter__tag:focus-visible {
550
1546
  box-shadow: 0 0 0 2px var(--noxion-primary);
551
1547
  }
552
1548
 
1549
+ .noxion-portfolio-filter__tag--selected {
1550
+ background-color: var(--noxion-foreground);
1551
+ color: var(--noxion-background);
1552
+ border-color: var(--noxion-foreground);
1553
+ }
1554
+
1555
+ .noxion-portfolio-filter__tag--selected:hover {
1556
+ opacity: 0.82;
1557
+ color: var(--noxion-background);
1558
+ border-color: var(--noxion-foreground);
1559
+ background-color: var(--noxion-foreground);
1560
+ }
1561
+
1562
+ .noxion-portfolio-filter__tag--more {
1563
+ color: var(--noxion-mutedForeground);
1564
+ border-style: dashed;
1565
+ letter-spacing: 0;
1566
+ }
1567
+
1568
+ .noxion-portfolio-filter__tag--more:hover {
1569
+ background-color: var(--noxion-accent);
1570
+ border-style: dashed;
1571
+ border-color: color-mix(in srgb, var(--noxion-foreground) 35%, transparent);
1572
+ color: var(--noxion-foreground);
1573
+ }
1574
+
553
1575
  /* ============================================
554
- EmptyState
1576
+ PortfolioProject (detail page)
555
1577
  ============================================ */
556
1578
 
557
- .noxion-empty-state {
1579
+ .noxion-template-portfolio-project {
1580
+ width: 100%;
1581
+ }
1582
+
1583
+ .noxion-portfolio-project__header {
558
1584
  display: flex;
559
- flex-direction: column;
560
1585
  align-items: center;
561
- justify-content: center;
562
- padding: 5rem 1rem;
563
- text-align: center;
1586
+ justify-content: space-between;
1587
+ gap: 1rem;
1588
+ margin-bottom: 1.5rem;
1589
+ padding-bottom: 1rem;
1590
+ border-bottom: 1px solid var(--noxion-border);
564
1591
  }
565
1592
 
566
- .noxion-empty-state__title {
567
- font-size: 1.25rem;
568
- font-weight: 600;
569
- color: var(--noxion-foreground);
570
- margin: 0 0 0.375rem;
571
- letter-spacing: -0.01em;
1593
+ @media (max-width: 640px) {
1594
+ .noxion-portfolio-project__header {
1595
+ flex-direction: column;
1596
+ align-items: flex-start;
1597
+ gap: 0.75rem;
1598
+ }
572
1599
  }
573
1600
 
574
- .noxion-empty-state__message {
575
- font-size: 0.9375rem;
1601
+ .noxion-portfolio-project__tech {
1602
+ display: flex;
1603
+ flex-wrap: wrap;
1604
+ gap: 0.375rem;
1605
+ }
1606
+
1607
+ .noxion-portfolio-project__tech-tag {
1608
+ font-size: 0.6875rem;
1609
+ font-weight: 500;
1610
+ padding: 0.1875rem 0.5rem;
1611
+ border-radius: 9999px;
1612
+ background-color: var(--noxion-muted);
576
1613
  color: var(--noxion-mutedForeground);
577
- margin: 0;
578
- max-width: 360px;
1614
+ }
1615
+
1616
+ .noxion-portfolio-project__link {
1617
+ font-size: 0.8125rem;
1618
+ font-weight: 500;
1619
+ color: var(--noxion-background);
1620
+ background-color: var(--noxion-foreground);
1621
+ text-decoration: none;
1622
+ padding: 0.4375rem 1rem;
1623
+ border-radius: 0.375rem;
1624
+ white-space: nowrap;
1625
+ transition: opacity var(--noxion-transition-fast);
1626
+ }
1627
+
1628
+ .noxion-portfolio-project__link:hover {
1629
+ opacity: 0.82;
579
1630
  }
580
1631
 
581
1632
  /* ============================================
582
- Layout
1633
+ DocsSidebar
583
1634
  ============================================ */
584
1635
 
585
- .noxion-layout {
586
- display: flex;
587
- flex-direction: column;
588
- min-height: 100vh;
589
- background-color: var(--noxion-background);
1636
+ .noxion-docs-sidebar {
1637
+ font-size: 0.8125rem;
590
1638
  }
591
1639
 
592
- .noxion-layout__header {
593
- flex-shrink: 0;
1640
+ .noxion-docs-sidebar__list {
1641
+ list-style: none;
1642
+ padding: 0;
1643
+ margin: 0;
594
1644
  }
595
1645
 
596
- .noxion-layout__content {
597
- flex: 1;
598
- width: 100%;
599
- max-width: var(--noxion-spacing-content);
600
- margin: 0 auto;
601
- padding: 2.5rem 1.5rem;
1646
+ .noxion-docs-sidebar__item {
1647
+ margin: 0;
1648
+ }
1649
+
1650
+ .noxion-docs-sidebar__link {
1651
+ display: block;
1652
+ padding: 0.375rem 0.5rem;
1653
+ border-radius: 0.375rem;
1654
+ color: var(--noxion-mutedForeground);
1655
+ text-decoration: none;
1656
+ line-height: 1.45;
1657
+ letter-spacing: -0.01em;
1658
+ transition:
1659
+ color var(--noxion-transition-fast),
1660
+ background-color var(--noxion-transition-fast);
1661
+ }
1662
+
1663
+ .noxion-docs-sidebar__link:hover {
1664
+ color: var(--noxion-foreground);
1665
+ background-color: var(--noxion-accent);
1666
+ }
1667
+
1668
+ .noxion-docs-sidebar__link--active {
1669
+ color: var(--noxion-foreground);
1670
+ font-weight: 500;
1671
+ background-color: var(--noxion-muted);
1672
+ }
1673
+
1674
+ .noxion-docs-sidebar__link--active:hover {
1675
+ background-color: var(--noxion-muted);
1676
+ }
1677
+
1678
+ /* ============================================
1679
+ DocsNav (prev / next)
1680
+ ============================================ */
1681
+
1682
+ .noxion-docs-nav {
1683
+ display: grid;
1684
+ grid-template-columns: 1fr 1fr;
1685
+ gap: 1rem;
1686
+ margin-top: 3rem;
1687
+ padding-top: 1.5rem;
1688
+ border-top: 1px solid var(--noxion-border);
602
1689
  }
603
1690
 
604
1691
  @media (max-width: 640px) {
605
- .noxion-layout__content {
606
- padding: 1.5rem 1rem;
1692
+ .noxion-docs-nav {
1693
+ grid-template-columns: 1fr;
1694
+ gap: 0.75rem;
1695
+ margin-top: 2rem;
607
1696
  }
608
1697
  }
609
1698
 
610
- .noxion-layout__footer {
611
- flex-shrink: 0;
612
- margin-top: auto;
1699
+ .noxion-docs-nav__prev {
1700
+ display: flex;
613
1701
  }
614
1702
 
615
- .noxion-layout__sidebar {
616
- width: var(--noxion-spacing-sidebar);
617
- flex-shrink: 0;
618
- padding: 2.5rem 1.5rem;
619
- border-right: 1px solid var(--noxion-border);
1703
+ .noxion-docs-nav__next {
1704
+ display: flex;
1705
+ justify-content: flex-end;
620
1706
  }
621
1707
 
622
- .noxion-layout__hero {
623
- width: 100%;
1708
+ @media (max-width: 640px) {
1709
+ .noxion-docs-nav__next {
1710
+ justify-content: flex-start;
1711
+ }
624
1712
  }
625
1713
 
626
- .noxion-layout--single-column {
1714
+ .noxion-docs-nav__link {
1715
+ display: flex;
627
1716
  flex-direction: column;
1717
+ gap: 0.25rem;
1718
+ padding: 0.75rem 1rem;
1719
+ border-radius: var(--noxion-border-radius);
1720
+ border: 1px solid var(--noxion-border);
1721
+ text-decoration: none;
1722
+ color: inherit;
1723
+ transition:
1724
+ border-color var(--noxion-transition-fast),
1725
+ background-color var(--noxion-transition-fast);
1726
+ min-width: 0;
628
1727
  }
629
1728
 
630
- .noxion-layout--sidebar-left > .noxion-layout__main {
631
- display: flex;
632
- flex: 1;
1729
+ .noxion-docs-nav__link:hover {
1730
+ border-color: color-mix(in srgb, var(--noxion-foreground) 30%, transparent);
1731
+ background-color: var(--noxion-accent);
633
1732
  }
634
1733
 
635
- .noxion-layout--sidebar-left > .noxion-layout__main > .noxion-layout__sidebar {
636
- order: -1;
637
- border-right: 1px solid var(--noxion-border);
638
- border-left: none;
1734
+ .noxion-docs-nav__label {
1735
+ font-size: 0.6875rem;
1736
+ font-weight: 600;
1737
+ text-transform: uppercase;
1738
+ letter-spacing: 0.04em;
1739
+ color: var(--noxion-mutedForeground);
639
1740
  }
640
1741
 
641
- .noxion-layout--sidebar-right > .noxion-layout__main {
642
- display: flex;
643
- flex: 1;
1742
+ .noxion-docs-nav__title {
1743
+ font-size: 0.875rem;
1744
+ font-weight: 500;
1745
+ color: var(--noxion-foreground);
1746
+ letter-spacing: -0.01em;
1747
+ overflow: hidden;
1748
+ text-overflow: ellipsis;
1749
+ white-space: nowrap;
644
1750
  }
645
1751
 
646
- .noxion-layout--sidebar-right > .noxion-layout__main > .noxion-layout__sidebar {
647
- border-left: 1px solid var(--noxion-border);
648
- border-right: none;
1752
+ .noxion-docs-nav__next .noxion-docs-nav__link {
1753
+ text-align: right;
1754
+ align-items: flex-end;
649
1755
  }
650
1756
 
651
- @media (max-width: 768px) {
652
- .noxion-layout__sidebar {
653
- width: 100%;
654
- border-right: none;
655
- border-bottom: 1px solid var(--noxion-border);
656
- padding: 1.5rem 1rem;
1757
+ @media (max-width: 640px) {
1758
+ .noxion-docs-nav__next .noxion-docs-nav__link {
1759
+ text-align: left;
1760
+ align-items: flex-start;
657
1761
  }
1762
+ }
658
1763
 
659
- .noxion-layout--sidebar-left > .noxion-layout__main,
660
- .noxion-layout--sidebar-right > .noxion-layout__main {
661
- flex-direction: column;
662
- }
1764
+ /* ============================================
1765
+ DocsBreadcrumb
1766
+ ============================================ */
663
1767
 
664
- .noxion-layout--sidebar-left > .noxion-layout__main > .noxion-layout__sidebar,
665
- .noxion-layout--sidebar-right > .noxion-layout__main > .noxion-layout__sidebar {
666
- border-left: none;
667
- border-right: none;
668
- }
1768
+ .noxion-docs-breadcrumb {
1769
+ font-size: 0.8125rem;
1770
+ margin-bottom: 1.5rem;
1771
+ }
1772
+
1773
+ .noxion-docs-breadcrumb__list {
1774
+ list-style: none;
1775
+ padding: 0;
1776
+ margin: 0;
1777
+ display: flex;
1778
+ align-items: center;
1779
+ flex-wrap: wrap;
1780
+ gap: 0;
1781
+ }
1782
+
1783
+ .noxion-docs-breadcrumb__item {
1784
+ display: inline-flex;
1785
+ align-items: center;
1786
+ }
1787
+
1788
+ .noxion-docs-breadcrumb__link {
1789
+ color: var(--noxion-mutedForeground);
1790
+ text-decoration: none;
1791
+ transition: color var(--noxion-transition-fast);
1792
+ }
1793
+
1794
+ .noxion-docs-breadcrumb__link:hover {
1795
+ color: var(--noxion-foreground);
1796
+ }
1797
+
1798
+ .noxion-docs-breadcrumb__current {
1799
+ color: var(--noxion-foreground);
1800
+ font-weight: 500;
1801
+ }
1802
+
1803
+ .noxion-docs-breadcrumb__separator {
1804
+ margin: 0 0.375rem;
1805
+ color: var(--noxion-border);
1806
+ font-size: 0.75rem;
1807
+ }
1808
+
1809
+ /* ============================================
1810
+ DocsPage template
1811
+ ============================================ */
1812
+
1813
+ .noxion-template-docs {
1814
+ width: 100%;
669
1815
  }