@prosophia/lab-minimal 0.0.3 → 0.0.4

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.
@@ -0,0 +1,314 @@
1
+ /* BookPage.module.css - Verdant Edition */
2
+
3
+ .pageWrapper {
4
+ padding-top: var(--header-height, 80px);
5
+ min-height: 100vh;
6
+ }
7
+
8
+ .pageContainer {
9
+ max-width: 1200px;
10
+ margin: 0 auto;
11
+ padding: var(--space-3xl, 6rem) var(--space-xl, 3rem);
12
+ }
13
+
14
+ .contentGrid {
15
+ display: grid;
16
+ grid-template-columns: 1fr;
17
+ gap: var(--space-xl, 3rem);
18
+ }
19
+
20
+ @media (min-width: 968px) {
21
+ .contentGrid {
22
+ grid-template-columns: 2fr 1fr;
23
+ }
24
+ }
25
+
26
+ /* Book Info Section - Glass card */
27
+ .bookInfo {
28
+ padding: var(--space-2xl, 4rem);
29
+ border-radius: var(--radius-2xl, 24px);
30
+ backdrop-filter: blur(20px) saturate(180%);
31
+ -webkit-backdrop-filter: blur(20px) saturate(180%);
32
+ }
33
+
34
+ :global(body:not(.dark-mode)) .bookInfo,
35
+ :global(.light-mode) .bookInfo {
36
+ background: rgba(255, 255, 255, 0.7);
37
+ border: 1px solid rgba(21, 48, 33, 0.08);
38
+ box-shadow: 0 8px 32px rgba(10, 24, 16, 0.08);
39
+ }
40
+
41
+ :global(.dark-mode) .bookInfo,
42
+ :global(.dark) .bookInfo {
43
+ background: var(--dark-bg-tertiary);
44
+ border: 1px solid rgba(var(--accent-primary-rgb, 139, 218, 163), 0.12);
45
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
46
+ }
47
+
48
+ @media (max-width: 768px) {
49
+ .bookInfo {
50
+ padding: var(--space-xl, 3rem);
51
+ }
52
+ }
53
+
54
+ .bookHeader {
55
+ margin-bottom: var(--space-xl, 3rem);
56
+ text-align: center;
57
+ padding-bottom: var(--space-lg, 2rem);
58
+ border-bottom: 1px solid;
59
+ }
60
+
61
+ :global(body:not(.dark-mode)) .bookHeader,
62
+ :global(.light-mode) .bookHeader {
63
+ border-bottom-color: rgba(21, 48, 33, 0.1);
64
+ }
65
+
66
+ :global(.dark-mode) .bookHeader,
67
+ :global(.dark) .bookHeader {
68
+ border-bottom-color: rgba(139, 218, 163, 0.1);
69
+ }
70
+
71
+ .bookTitle {
72
+ font-size: clamp(1.75rem, 3vw, 2.5rem);
73
+ font-weight: 600;
74
+ line-height: 1.2;
75
+ letter-spacing: -0.01em;
76
+ margin: 0 0 var(--space-md, 1.5rem) 0;
77
+ }
78
+
79
+ .bookAuthors {
80
+ font-size: 1.125rem;
81
+ font-weight: 500;
82
+ color: var(--accent-tertiary, #5CB87A);
83
+ }
84
+
85
+ .bookCoverWrapper {
86
+ text-align: center;
87
+ margin-bottom: var(--space-xl, 3rem);
88
+ }
89
+
90
+ .bookCover {
91
+ max-width: 400px;
92
+ width: 100%;
93
+ height: auto;
94
+ border-radius: var(--radius-xl, 20px);
95
+ box-shadow: 0 20px 60px rgba(10, 24, 16, 0.2);
96
+ }
97
+
98
+ .bookDescription {
99
+ line-height: 1.8;
100
+ font-size: 1rem;
101
+ margin-bottom: var(--space-xl, 3rem);
102
+ }
103
+
104
+ :global(body:not(.dark-mode)) .bookDescription,
105
+ :global(.light-mode) .bookDescription {
106
+ color: var(--light-text-secondary, #153021);
107
+ }
108
+
109
+ :global(.dark-mode) .bookDescription,
110
+ :global(.dark) .bookDescription {
111
+ color: var(--dark-text-secondary, #8BDAA3);
112
+ }
113
+
114
+ .bookDescription :global(p) {
115
+ margin: 0 0 var(--space-lg, 2rem) 0;
116
+ }
117
+
118
+ .bookDescription :global(p:first-of-type) {
119
+ font-size: 1.125rem;
120
+ font-weight: 500;
121
+ margin-bottom: var(--space-xl, 3rem);
122
+ padding-left: var(--space-md, 1.5rem);
123
+ position: relative;
124
+ }
125
+
126
+ .bookDescription :global(p:first-of-type)::before {
127
+ content: '';
128
+ position: absolute;
129
+ left: 0;
130
+ top: 0;
131
+ width: 4px;
132
+ height: 100%;
133
+ background: linear-gradient(180deg, var(--accent-tertiary, #5CB87A), var(--accent-gold, #D4A574));
134
+ border-radius: 2px;
135
+ }
136
+
137
+ /* Metadata Grid */
138
+ .bookMetadata {
139
+ display: grid;
140
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
141
+ gap: var(--space-md, 1.5rem);
142
+ margin-top: var(--space-xl, 3rem);
143
+ padding: var(--space-lg, 2rem);
144
+ border-radius: var(--radius-lg, 16px);
145
+ }
146
+
147
+ :global(body:not(.dark-mode)) .bookMetadata,
148
+ :global(.light-mode) .bookMetadata {
149
+ background: rgba(42, 104, 71, 0.06);
150
+ border: 1px solid rgba(21, 48, 33, 0.08);
151
+ }
152
+
153
+ :global(.dark-mode) .bookMetadata,
154
+ :global(.dark) .bookMetadata {
155
+ background: rgba(92, 184, 122, 0.08);
156
+ border: 1px solid rgba(139, 218, 163, 0.1);
157
+ }
158
+
159
+ .metadataItem {
160
+ display: flex;
161
+ flex-direction: column;
162
+ gap: var(--space-xs, 0.5rem);
163
+ }
164
+
165
+ .metadataLabel {
166
+ font-size: 0.75rem;
167
+ font-weight: 600;
168
+ letter-spacing: 0.1em;
169
+ text-transform: uppercase;
170
+ color: var(--accent-tertiary, #5CB87A);
171
+ }
172
+
173
+ .metadataValue {
174
+ font-size: 0.9375rem;
175
+ font-weight: 500;
176
+ }
177
+
178
+ /* Purchase Section - Sticky glass card */
179
+ .purchaseSection {
180
+ padding: var(--space-xl, 3rem);
181
+ border-radius: var(--radius-xl, 20px);
182
+ backdrop-filter: blur(20px) saturate(180%);
183
+ -webkit-backdrop-filter: blur(20px) saturate(180%);
184
+ height: fit-content;
185
+ }
186
+
187
+ :global(body:not(.dark-mode)) .purchaseSection,
188
+ :global(.light-mode) .purchaseSection {
189
+ background: rgba(255, 255, 255, 0.7);
190
+ border: 1px solid rgba(21, 48, 33, 0.08);
191
+ box-shadow: 0 8px 32px rgba(10, 24, 16, 0.08);
192
+ }
193
+
194
+ :global(.dark-mode) .purchaseSection,
195
+ :global(.dark) .purchaseSection {
196
+ background: var(--dark-bg-tertiary);
197
+ border: 1px solid rgba(var(--accent-primary-rgb, 139, 218, 163), 0.12);
198
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
199
+ }
200
+
201
+ @media (min-width: 968px) {
202
+ .purchaseSection {
203
+ position: sticky;
204
+ top: calc(var(--header-height, 80px) + var(--space-lg, 2rem));
205
+ }
206
+ }
207
+
208
+ .purchaseHeading {
209
+ font-size: 0.875rem;
210
+ font-weight: 600;
211
+ letter-spacing: 0.12em;
212
+ text-transform: uppercase;
213
+ margin-bottom: var(--space-lg, 2rem);
214
+ text-align: center;
215
+ padding-bottom: var(--space-sm, 1rem);
216
+ position: relative;
217
+ }
218
+
219
+ :global(body:not(.dark-mode)) .purchaseHeading,
220
+ :global(.light-mode) .purchaseHeading {
221
+ color: var(--accent-secondary, #3A8F62);
222
+ }
223
+
224
+ :global(.dark-mode) .purchaseHeading,
225
+ :global(.dark) .purchaseHeading {
226
+ color: var(--dark-text-secondary, #8BDAA3);
227
+ }
228
+
229
+ .purchaseHeading::after {
230
+ content: '';
231
+ position: absolute;
232
+ bottom: 0;
233
+ left: 50%;
234
+ transform: translateX(-50%);
235
+ width: 40px;
236
+ height: 3px;
237
+ background: linear-gradient(90deg, var(--accent-tertiary, #5CB87A), var(--accent-gold, #D4A574));
238
+ border-radius: 2px;
239
+ }
240
+
241
+ .retailersList {
242
+ display: flex;
243
+ flex-direction: column;
244
+ gap: var(--space-sm, 1rem);
245
+ margin-bottom: var(--space-xl, 3rem);
246
+ }
247
+
248
+ /* Retailer links with translateX hover */
249
+ .retailerLink {
250
+ display: block;
251
+ padding: var(--space-md, 1.5rem);
252
+ border-radius: var(--radius-md, 12px);
253
+ text-decoration: none;
254
+ font-weight: 500;
255
+ text-align: center;
256
+ transition: all var(--transition-base);
257
+ }
258
+
259
+ :global(body:not(.dark-mode)) .retailerLink,
260
+ :global(.light-mode) .retailerLink {
261
+ background: rgba(255, 255, 255, 0.9);
262
+ border: 1px solid rgba(21, 48, 33, 0.1);
263
+ color: var(--light-text-primary, #0A1810);
264
+ }
265
+
266
+ :global(.dark-mode) .retailerLink,
267
+ :global(.dark) .retailerLink {
268
+ background: var(--dark-bg-secondary);
269
+ border: 1px solid rgba(var(--accent-primary-rgb, 139, 218, 163), 0.15);
270
+ color: var(--dark-text-primary, #E8F9ED);
271
+ }
272
+
273
+ .retailerLink:hover {
274
+ transform: translateX(8px);
275
+ color: var(--accent-tertiary, #5CB87A);
276
+ }
277
+
278
+ :global(body:not(.dark-mode)) .retailerLink:hover,
279
+ :global(.light-mode) .retailerLink:hover {
280
+ border-color: rgba(42, 104, 71, 0.3);
281
+ box-shadow: 0 4px 16px rgba(10, 24, 16, 0.1);
282
+ }
283
+
284
+ :global(.dark-mode) .retailerLink:hover,
285
+ :global(.dark) .retailerLink:hover {
286
+ border-color: rgba(139, 218, 163, 0.3);
287
+ box-shadow: 0 4px 16px rgba(10, 24, 16, 0.2);
288
+ }
289
+
290
+ /* Additional Info */
291
+ .additionalInfo {
292
+ padding: var(--space-md, 1.5rem);
293
+ border-radius: var(--radius-md, 12px);
294
+ font-size: 0.875rem;
295
+ line-height: 1.7;
296
+ text-align: center;
297
+ }
298
+
299
+ :global(body:not(.dark-mode)) .additionalInfo,
300
+ :global(.light-mode) .additionalInfo {
301
+ background: rgba(42, 104, 71, 0.06);
302
+ color: var(--light-text-muted, #7F878B);
303
+ }
304
+
305
+ :global(.dark-mode) .additionalInfo,
306
+ :global(.dark) .additionalInfo {
307
+ background: rgba(92, 184, 122, 0.08);
308
+ color: var(--dark-text-muted, #5C6366);
309
+ }
310
+
311
+ .additionalInfo strong {
312
+ color: var(--accent-tertiary, #5CB87A);
313
+ font-weight: 600;
314
+ }
@@ -0,0 +1,99 @@
1
+ /* ContactCTA.module.css - Verdant Edition */
2
+
3
+ .ctaContainer {
4
+ padding: var(--space-2xl, 4rem) var(--space-xl, 3rem);
5
+ margin-top: var(--space-3xl, 6rem);
6
+ text-align: center;
7
+ border-radius: var(--radius-2xl, 24px);
8
+ backdrop-filter: blur(20px) saturate(180%);
9
+ -webkit-backdrop-filter: blur(20px) saturate(180%);
10
+ position: relative;
11
+ overflow: hidden;
12
+ }
13
+
14
+ /* Decorative gradient background */
15
+ .ctaContainer::before {
16
+ content: '';
17
+ position: absolute;
18
+ top: 0;
19
+ left: 0;
20
+ right: 0;
21
+ bottom: 0;
22
+ background: linear-gradient(
23
+ 135deg,
24
+ rgba(42, 104, 71, 0.1) 0%,
25
+ rgba(92, 184, 122, 0.05) 50%,
26
+ rgba(212, 165, 116, 0.1) 100%
27
+ );
28
+ z-index: -1;
29
+ }
30
+
31
+ :global(body:not(.dark-mode)) .ctaContainer,
32
+ :global(.light-mode) .ctaContainer {
33
+ background: rgba(255, 255, 255, 0.7);
34
+ border: 1px solid rgba(21, 48, 33, 0.1);
35
+ box-shadow: 0 8px 32px rgba(10, 24, 16, 0.08);
36
+ }
37
+
38
+ :global(.dark-mode) .ctaContainer,
39
+ :global(.dark) .ctaContainer {
40
+ background: var(--dark-bg-tertiary);
41
+ border: 1px solid rgba(var(--accent-primary-rgb, 139, 218, 163), 0.15);
42
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
43
+ }
44
+
45
+ .ctaContent {
46
+ max-width: 700px;
47
+ margin: 0 auto;
48
+ position: relative;
49
+ z-index: 1;
50
+ }
51
+
52
+ .ctaHeading {
53
+ font-size: clamp(1.5rem, 3vw, 2.25rem);
54
+ font-weight: 600;
55
+ line-height: 1.2;
56
+ letter-spacing: -0.01em;
57
+ margin-bottom: var(--space-md, 1.5rem);
58
+ }
59
+
60
+ .ctaText {
61
+ font-size: 1.0625rem;
62
+ line-height: 1.7;
63
+ margin-bottom: var(--space-xl, 3rem);
64
+ }
65
+
66
+ :global(body:not(.dark-mode)) .ctaText,
67
+ :global(.light-mode) .ctaText {
68
+ color: var(--light-text-muted, #7F878B);
69
+ }
70
+
71
+ :global(.dark-mode) .ctaText,
72
+ :global(.dark) .ctaText {
73
+ color: var(--dark-text-muted, #5C6366);
74
+ }
75
+
76
+ /* CTA Button - Gradient with lift */
77
+ .ctaButton {
78
+ display: inline-flex;
79
+ align-items: center;
80
+ gap: 0.5rem;
81
+ padding: 1rem 2rem;
82
+ background: linear-gradient(135deg, var(--accent-primary, #2A6847), var(--accent-secondary, #3A8F62));
83
+ color: white;
84
+ border-radius: var(--radius-md, 12px);
85
+ font-weight: 600;
86
+ font-size: 1rem;
87
+ text-decoration: none;
88
+ transition: all var(--transition-base);
89
+ box-shadow: 0 4px 20px rgba(42, 104, 71, 0.3);
90
+ }
91
+
92
+ .ctaButton:hover {
93
+ transform: translateY(-3px);
94
+ box-shadow: 0 8px 30px rgba(42, 104, 71, 0.4);
95
+ }
96
+
97
+ .ctaButton:active {
98
+ transform: translateY(-1px);
99
+ }
@@ -0,0 +1,169 @@
1
+ /* ContactPage.module.css - Minimal Template */
2
+
3
+ .pageWrapper {
4
+ padding-top: var(--header-height, 64px);
5
+ min-height: 100vh;
6
+ }
7
+
8
+ .pageContainer {
9
+ max-width: var(--max-width-content);
10
+ margin: 0 auto;
11
+ padding: 0 var(--spacing-lg);
12
+ }
13
+
14
+ /* Page Header */
15
+ .pageHeader {
16
+ text-align: center;
17
+ padding: var(--spacing-4xl) 0 var(--spacing-3xl);
18
+ border-bottom: 1px solid var(--color-border);
19
+ margin-bottom: var(--spacing-3xl);
20
+ }
21
+
22
+ .title {
23
+ font-size: var(--font-size-4xl);
24
+ font-weight: var(--font-weight-semibold);
25
+ color: var(--color-text-primary);
26
+ margin: 0 0 var(--spacing-sm) 0;
27
+ }
28
+
29
+ .subtitle {
30
+ font-size: var(--font-size-lg);
31
+ color: var(--color-text-secondary);
32
+ max-width: 500px;
33
+ margin: 0 auto;
34
+ }
35
+
36
+ .main {
37
+ padding-bottom: var(--spacing-4xl);
38
+ }
39
+
40
+ /* Contact Grid */
41
+ .contactGrid {
42
+ display: grid;
43
+ grid-template-columns: 1fr;
44
+ gap: var(--spacing-md);
45
+ max-width: 700px;
46
+ margin: 0 auto;
47
+ }
48
+
49
+ @media (min-width: 640px) {
50
+ .contactGrid {
51
+ grid-template-columns: 1fr 1fr;
52
+ }
53
+ }
54
+
55
+ /* Info Cards - Simple */
56
+ .infoCard {
57
+ padding: var(--spacing-lg);
58
+ border-radius: var(--border-radius-md);
59
+ background: var(--color-background-card);
60
+ border: 1px solid var(--color-border);
61
+ transition: border-color var(--transition-base);
62
+ }
63
+
64
+ .infoCard:hover {
65
+ border-color: var(--accent-primary);
66
+ }
67
+
68
+ .infoCardIcon {
69
+ width: 40px;
70
+ height: 40px;
71
+ border-radius: var(--border-radius-sm);
72
+ background: var(--accent-muted);
73
+ display: flex;
74
+ align-items: center;
75
+ justify-content: center;
76
+ margin-bottom: var(--spacing-md);
77
+ }
78
+
79
+ .infoCardIcon svg,
80
+ .infoCardIcon span {
81
+ font-size: 1.25rem;
82
+ color: var(--accent-primary);
83
+ }
84
+
85
+ .infoCardTitle {
86
+ font-size: var(--font-size-base);
87
+ font-weight: var(--font-weight-semibold);
88
+ color: var(--color-text-primary);
89
+ margin: 0 0 var(--spacing-sm) 0;
90
+ }
91
+
92
+ .infoCardContent {
93
+ font-size: var(--font-size-sm);
94
+ line-height: 1.6;
95
+ color: var(--color-text-secondary);
96
+ }
97
+
98
+ .infoCardContent a {
99
+ color: var(--accent-primary);
100
+ text-decoration: none;
101
+ font-weight: var(--font-weight-medium);
102
+ transition: color var(--transition-base);
103
+ }
104
+
105
+ .infoCardContent a:hover {
106
+ color: var(--accent-hover);
107
+ }
108
+
109
+ .infoCardContent p {
110
+ margin: 0 0 var(--spacing-xs) 0;
111
+ }
112
+
113
+ /* Map Section */
114
+ .mapSection {
115
+ margin-top: var(--spacing-3xl);
116
+ max-width: 700px;
117
+ margin-left: auto;
118
+ margin-right: auto;
119
+ }
120
+
121
+ .mapHeading {
122
+ font-size: var(--font-size-sm);
123
+ font-weight: var(--font-weight-semibold);
124
+ color: var(--accent-primary);
125
+ margin-bottom: var(--spacing-md);
126
+ text-align: center;
127
+ }
128
+
129
+ .mapContainer {
130
+ width: 100%;
131
+ height: 300px;
132
+ border-radius: var(--border-radius-md);
133
+ overflow: hidden;
134
+ border: 1px solid var(--color-border);
135
+ }
136
+
137
+ .mapContainer iframe {
138
+ width: 100%;
139
+ height: 100%;
140
+ border: none;
141
+ }
142
+
143
+ /* Additional Info */
144
+ .additionalInfo {
145
+ margin-top: var(--spacing-2xl);
146
+ padding: var(--spacing-lg);
147
+ border-radius: var(--border-radius-md);
148
+ background: var(--color-background-secondary);
149
+ border: 1px solid var(--color-border);
150
+ text-align: center;
151
+ max-width: 700px;
152
+ margin-left: auto;
153
+ margin-right: auto;
154
+ }
155
+
156
+ .additionalInfoContent h3 {
157
+ font-size: var(--font-size-base);
158
+ font-weight: var(--font-weight-semibold);
159
+ color: var(--color-text-primary);
160
+ margin: 0 0 var(--spacing-sm) 0;
161
+ }
162
+
163
+ .additionalInfoContent p,
164
+ .additionalInfoContent :global(p) {
165
+ font-size: var(--font-size-sm);
166
+ line-height: 1.6;
167
+ color: var(--color-text-secondary);
168
+ margin: 0;
169
+ }