@lottecode/lottecss 0.0.1 → 0.0.3

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,330 @@
1
+ /* Multi-Column Layout */
2
+
3
+ /* Column Count */
4
+ .columns-1 {
5
+ column-count: 1;
6
+ }
7
+
8
+ .columns-2 {
9
+ column-count: 2;
10
+ }
11
+
12
+ .columns-3 {
13
+ column-count: 3;
14
+ }
15
+
16
+ .columns-4 {
17
+ column-count: 4;
18
+ }
19
+
20
+ .columns-5 {
21
+ column-count: 5;
22
+ }
23
+
24
+ .columns-6 {
25
+ column-count: 6;
26
+ }
27
+
28
+ /* Column Width */
29
+ .columns-xs {
30
+ column-width: 10rem;
31
+ }
32
+
33
+ .columns-sm {
34
+ column-width: 15rem;
35
+ }
36
+
37
+ .columns-md {
38
+ column-width: 20rem;
39
+ }
40
+
41
+ .columns-lg {
42
+ column-width: 25rem;
43
+ }
44
+
45
+ .columns-xl {
46
+ column-width: 30rem;
47
+ }
48
+
49
+ /* Column Gap */
50
+ .column-gap-0 {
51
+ column-gap: 0;
52
+ }
53
+
54
+ .column-gap-1 {
55
+ column-gap: 0.25rem;
56
+ }
57
+
58
+ .column-gap-2 {
59
+ column-gap: 0.5rem;
60
+ }
61
+
62
+ .column-gap-4 {
63
+ column-gap: 1rem;
64
+ }
65
+
66
+ .column-gap-6 {
67
+ column-gap: 1.5rem;
68
+ }
69
+
70
+ .column-gap-8 {
71
+ column-gap: 2rem;
72
+ }
73
+
74
+ /* Column Rule */
75
+ .column-rule {
76
+ column-rule: 1px solid var(--color-border);
77
+ }
78
+
79
+ .column-rule-none {
80
+ column-rule: none;
81
+ }
82
+
83
+ .column-rule-dotted {
84
+ column-rule-style: dotted;
85
+ }
86
+
87
+ .column-rule-dashed {
88
+ column-rule-style: dashed;
89
+ }
90
+
91
+ .column-rule-solid {
92
+ column-rule-style: solid;
93
+ }
94
+
95
+ .column-rule-double {
96
+ column-rule-style: double;
97
+ }
98
+
99
+ /* Column Rule Width */
100
+ .column-rule-1 {
101
+ column-rule-width: 1px;
102
+ }
103
+
104
+ .column-rule-2 {
105
+ column-rule-width: 2px;
106
+ }
107
+
108
+ .column-rule-4 {
109
+ column-rule-width: 4px;
110
+ }
111
+
112
+ /* Column Rule Color - using CSS variables */
113
+ .column-rule-primary {
114
+ column-rule-color: var(--color-primary);
115
+ }
116
+
117
+ .column-rule-secondary {
118
+ column-rule-color: var(--color-secondary);
119
+ }
120
+
121
+ .column-rule-muted {
122
+ column-rule-color: var(--color-muted);
123
+ }
124
+
125
+ /* Column Span */
126
+ .column-span-all {
127
+ column-span: all;
128
+ }
129
+
130
+ .column-span-none {
131
+ column-span: none;
132
+ }
133
+
134
+ /* Column Fill */
135
+ .column-fill-auto {
136
+ column-fill: auto;
137
+ }
138
+
139
+ .column-fill-balance {
140
+ column-fill: balance;
141
+ }
142
+
143
+ /* Break Inside */
144
+ .break-inside-auto {
145
+ break-inside: auto;
146
+ }
147
+
148
+ .break-inside-avoid {
149
+ break-inside: avoid;
150
+ }
151
+
152
+ .break-inside-avoid-column {
153
+ break-inside: avoid-column;
154
+ }
155
+
156
+ /* Break Before */
157
+ .break-before-auto {
158
+ break-before: auto;
159
+ }
160
+
161
+ .break-before-column {
162
+ break-before: column;
163
+ }
164
+
165
+ .break-before-avoid-column {
166
+ break-before: avoid-column;
167
+ }
168
+
169
+ /* Break After */
170
+ .break-after-auto {
171
+ break-after: auto;
172
+ }
173
+
174
+ .break-after-column {
175
+ break-after: column;
176
+ }
177
+
178
+ .break-after-avoid-column {
179
+ break-after: avoid-column;
180
+ }
181
+
182
+ /* Responsive Column Utilities */
183
+ @media (min-width: 640px) {
184
+ .sm\:columns-1 {
185
+ column-count: 1;
186
+ }
187
+ .sm\:columns-2 {
188
+ column-count: 2;
189
+ }
190
+ .sm\:columns-3 {
191
+ column-count: 3;
192
+ }
193
+ .sm\:columns-4 {
194
+ column-count: 4;
195
+ }
196
+ .sm\:columns-5 {
197
+ column-count: 5;
198
+ }
199
+ .sm\:columns-6 {
200
+ column-count: 6;
201
+ }
202
+
203
+ .sm\:columns-xs {
204
+ column-width: 10rem;
205
+ }
206
+ .sm\:columns-sm {
207
+ column-width: 15rem;
208
+ }
209
+ .sm\:columns-md {
210
+ column-width: 20rem;
211
+ }
212
+ .sm\:columns-lg {
213
+ column-width: 25rem;
214
+ }
215
+ .sm\:columns-xl {
216
+ column-width: 30rem;
217
+ }
218
+ }
219
+
220
+ @media (min-width: 768px) {
221
+ .md\:columns-1 {
222
+ column-count: 1;
223
+ }
224
+ .md\:columns-2 {
225
+ column-count: 2;
226
+ }
227
+ .md\:columns-3 {
228
+ column-count: 3;
229
+ }
230
+ .md\:columns-4 {
231
+ column-count: 4;
232
+ }
233
+ .md\:columns-5 {
234
+ column-count: 5;
235
+ }
236
+ .md\:columns-6 {
237
+ column-count: 6;
238
+ }
239
+
240
+ .md\:columns-xs {
241
+ column-width: 10rem;
242
+ }
243
+ .md\:columns-sm {
244
+ column-width: 15rem;
245
+ }
246
+ .md\:columns-md {
247
+ column-width: 20rem;
248
+ }
249
+ .md\:columns-lg {
250
+ column-width: 25rem;
251
+ }
252
+ .md\:columns-xl {
253
+ column-width: 30rem;
254
+ }
255
+
256
+ .md\:column-gap-0 {
257
+ column-gap: 0;
258
+ }
259
+ .md\:column-gap-1 {
260
+ column-gap: 0.25rem;
261
+ }
262
+ .md\:column-gap-2 {
263
+ column-gap: 0.5rem;
264
+ }
265
+ .md\:column-gap-4 {
266
+ column-gap: 1rem;
267
+ }
268
+ .md\:column-gap-6 {
269
+ column-gap: 1.5rem;
270
+ }
271
+ .md\:column-gap-8 {
272
+ column-gap: 2rem;
273
+ }
274
+ }
275
+
276
+ @media (min-width: 1024px) {
277
+ .lg\:columns-1 {
278
+ column-count: 1;
279
+ }
280
+ .lg\:columns-2 {
281
+ column-count: 2;
282
+ }
283
+ .lg\:columns-3 {
284
+ column-count: 3;
285
+ }
286
+ .lg\:columns-4 {
287
+ column-count: 4;
288
+ }
289
+ .lg\:columns-5 {
290
+ column-count: 5;
291
+ }
292
+ .lg\:columns-6 {
293
+ column-count: 6;
294
+ }
295
+
296
+ .lg\:columns-xs {
297
+ column-width: 10rem;
298
+ }
299
+ .lg\:columns-sm {
300
+ column-width: 15rem;
301
+ }
302
+ .lg\:columns-md {
303
+ column-width: 20rem;
304
+ }
305
+ .lg\:columns-lg {
306
+ column-width: 25rem;
307
+ }
308
+ .lg\:columns-xl {
309
+ column-width: 30rem;
310
+ }
311
+
312
+ .lg\:column-gap-0 {
313
+ column-gap: 0;
314
+ }
315
+ .lg\:column-gap-1 {
316
+ column-gap: 0.25rem;
317
+ }
318
+ .lg\:column-gap-2 {
319
+ column-gap: 0.5rem;
320
+ }
321
+ .lg\:column-gap-4 {
322
+ column-gap: 1rem;
323
+ }
324
+ .lg\:column-gap-6 {
325
+ column-gap: 1.5rem;
326
+ }
327
+ .lg\:column-gap-8 {
328
+ column-gap: 2rem;
329
+ }
330
+ }
@@ -0,0 +1,12 @@
1
+ .editorial p,
2
+ .editorial h1,
3
+ .editorial h2,
4
+ .editorial h3,
5
+ .editorial h4,
6
+ .editorial h5,
7
+ .editorial h6,
8
+ .editorial ul,
9
+ .editorial ol,
10
+ .editorial blockquote {
11
+ max-width: 400px;
12
+ }
@@ -0,0 +1,46 @@
1
+ /* Fonts */
2
+
3
+ /* Font Variables */
4
+ :root {
5
+ --font-cdn: "https://assets.lottecode.com";
6
+ --font-family-sans: "Berkeley Mono", monospace;
7
+ --font-family-mono: "Berkeley Mono", monospace;
8
+ }
9
+
10
+ /* Font Utility Classes */
11
+ .font-sans {
12
+ font-family: var(--font-family-sans);
13
+ }
14
+
15
+ .font-mono {
16
+ font-family: var(--font-family-mono);
17
+ }
18
+
19
+ /* Berkeley Mono — https://berkeleygraphics.com/typefaces/berkeley-mono */
20
+ @font-face {
21
+ font-family: "Berkeley Mono";
22
+ src: url("https://assets.lottecode.com/fonts/BerkeleyMono-Regular.ttf") format("truetype");
23
+ font-weight: 400;
24
+ font-style: normal;
25
+ }
26
+
27
+ @font-face {
28
+ font-family: "Berkeley Mono";
29
+ src: url("https://assets.lottecode.com/fonts/BerkeleyMono-Bold.ttf") format("truetype");
30
+ font-weight: 700;
31
+ font-style: normal;
32
+ }
33
+
34
+ @font-face {
35
+ font-family: "Berkeley Mono";
36
+ src: url("https://assets.lottecode.com/fonts/BerkeleyMono-Italic.ttf") format("truetype");
37
+ font-weight: 400;
38
+ font-style: italic;
39
+ }
40
+
41
+ @font-face {
42
+ font-family: "Berkeley Mono";
43
+ src: url("https://assets.lottecode.com/fonts/BerkeleyMono-BoldItalic.ttf") format("truetype");
44
+ font-weight: 700;
45
+ font-style: italic;
46
+ }
@@ -0,0 +1,174 @@
1
+ body {
2
+ /* Form container */
3
+
4
+ & form {
5
+ margin-bottom: 1rem;
6
+ }
7
+
8
+ /* Fieldset and Legend */
9
+
10
+ & fieldset {
11
+ /*margin: 0 0 1.5rem 0;*/
12
+ /*padding: 1rem;*/
13
+ /*border: 1px solid var(--color-border);*/
14
+ /*border-radius: 4px;*/
15
+ /*background-color: var(--color-surface);*/
16
+ }
17
+
18
+ & legend {
19
+ width: auto;
20
+ padding: 0 0.5rem;
21
+ font-weight: 600;
22
+ color: var(--color-foreground);
23
+ }
24
+
25
+ /* Form groups */
26
+
27
+ & form div {
28
+ margin-bottom: 1rem;
29
+ }
30
+
31
+ /* Labels */
32
+
33
+ & label {
34
+ display: inline-block;
35
+ margin-bottom: 0.5rem;
36
+ font-weight: 500;
37
+ color: var(--color-foreground);
38
+ }
39
+
40
+ /* Basic inputs */
41
+
42
+ & input[type="text"],
43
+ & input[type="email"],
44
+ & input[type="password"],
45
+ & input[type="number"],
46
+ & input[type="tel"],
47
+ & input[type="url"],
48
+ & input[type="search"] {
49
+ display: block;
50
+ width: 100%;
51
+ padding: 0.25rem 0.5rem;
52
+ line-height: 1.5;
53
+ color: var(--color-foreground);
54
+ background-color: var(--color-background);
55
+ background-clip: padding-box;
56
+ border: 1px solid var(--color-border);
57
+ border-radius: 0;
58
+ transition: border-color 0.15s ease-in-out;
59
+ }
60
+
61
+ & input:focus {
62
+ border-color: var(--color-accent);
63
+ outline: 0;
64
+ box-shadow: 0 0 0 0.2rem var(--color-accent);
65
+ }
66
+
67
+ /* Form controls with validation states */
68
+
69
+ .is-valid {
70
+ border-color: var(--color-success);
71
+ }
72
+
73
+ .is-valid:focus {
74
+ border-color: var(--color-success);
75
+ box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
76
+ }
77
+
78
+ .is-invalid {
79
+ border-color: var(--color-error);
80
+ }
81
+
82
+ .is-invalid:focus {
83
+ border-color: var(--color-error);
84
+ box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
85
+ }
86
+
87
+ /* Other input types */
88
+
89
+ & input[type="date"],
90
+ & input[type="time"],
91
+ & input[type="datetime-local"] {
92
+ display: block;
93
+ width: 100%;
94
+ padding: 0.375rem 0.75rem;
95
+ line-height: 1.5;
96
+ color: var(--color-foreground);
97
+ background-color: var(--color-background);
98
+ background-clip: padding-box;
99
+ border: 1px solid var(--color-border);
100
+ border-radius: 0.25rem;
101
+ }
102
+
103
+ & input[type="radio"],
104
+ & input[type="checkbox"] {
105
+ margin-right: 0.5rem;
106
+ }
107
+
108
+ & input[type="color"] {
109
+ height: 2rem;
110
+ width: 4rem;
111
+ padding: 0.2rem;
112
+ background-color: var(--color-background);
113
+ border: 1px solid var(--color-border);
114
+ }
115
+
116
+ & input[type="range"] {
117
+ width: 100%;
118
+ }
119
+
120
+ /* Select elements */
121
+
122
+ & select {
123
+ display: block;
124
+ width: 100%;
125
+ padding: 0.375rem 0.75rem;
126
+ line-height: 1.5;
127
+ color: var(--color-foreground);
128
+ background-color: var(--color-background);
129
+ background-clip: padding-box;
130
+ border: 1px solid var(--color-border);
131
+ border-radius: 0.25rem;
132
+ }
133
+
134
+ & select[multiple] {
135
+ height: auto;
136
+ }
137
+
138
+ /* Textarea */
139
+
140
+ & textarea {
141
+ display: block;
142
+ width: 100%;
143
+ padding: 0.375rem 0.75rem;
144
+ line-height: 1.5;
145
+ color: var(--color-foreground);
146
+ background-color: var(--color-background);
147
+ background-clip: padding-box;
148
+ border: 1px solid var(--color-border);
149
+ border-radius: 0.25rem;
150
+ resize: vertical;
151
+ }
152
+
153
+ /* Form layout using Grid */
154
+ @media (min-width: 768px) {
155
+ .form-grid {
156
+ display: grid;
157
+ grid-template-columns: 30% 70%;
158
+ gap: 0.5rem;
159
+ align-items: center;
160
+ }
161
+
162
+ .form-grid label {
163
+ grid-column: 1;
164
+ text-align: right;
165
+ margin-bottom: 0;
166
+ }
167
+
168
+ .form-grid input,
169
+ .form-grid select,
170
+ .form-grid textarea {
171
+ grid-column: 2;
172
+ }
173
+ }
174
+ }
@@ -0,0 +1,144 @@
1
+ *,
2
+ *::before,
3
+ *::after {
4
+ box-sizing: border-box;
5
+ }
6
+
7
+ body {
8
+ font-family: "Berkeley Mono", monospace;
9
+ font-size: 16px;
10
+ background-color: var(--color-background);
11
+ margin: 0;
12
+ padding: 0;
13
+ -webkit-text-size-adjust: 100%;
14
+ -webkit-tap-highlight-color: var(--color-accent);
15
+ }
16
+
17
+ * {
18
+ border-color: var(--color-border);
19
+ }
20
+
21
+ p + p {
22
+ margin-top: 1rem;
23
+ }
24
+
25
+ h1 {
26
+ font-size: 1.5rem;
27
+ text-transform: uppercase;
28
+ }
29
+
30
+ .card-bevel {
31
+ position: relative;
32
+ }
33
+
34
+ .card-bevel::after {
35
+ content: "";
36
+ position: absolute;
37
+ bottom: -3px;
38
+ right: -3px;
39
+ width: calc(100% - 2px);
40
+ height: calc(100% - 2px);
41
+ border-bottom: 3px solid black;
42
+ border-right: 3px solid black;
43
+ opacity: 1;
44
+ }
45
+
46
+ /* Carousel animation */
47
+ @keyframes scroll {
48
+ 0% {
49
+ transform: translateX(0);
50
+ }
51
+ 100% {
52
+ transform: translateX(-50%);
53
+ }
54
+ }
55
+
56
+ .ticker-content {
57
+ animation: scroll 60s linear infinite;
58
+ will-change: transform;
59
+ }
60
+
61
+ .ticker-item {
62
+ padding: 0 1rem;
63
+ }
64
+
65
+ /* Tarot card flip */
66
+ .tarot-card-flip {
67
+ perspective: 800px;
68
+ }
69
+
70
+ .tarot-card-inner {
71
+ position: relative;
72
+ width: 100%;
73
+ height: 100%;
74
+ transition: transform 0.8s cubic-bezier(0.4, 0, 0.2, 1);
75
+ transform-style: preserve-3d;
76
+ }
77
+
78
+ .tarot-card-inner.flipped {
79
+ transform: rotateY(180deg);
80
+ }
81
+
82
+ .tarot-card-front,
83
+ .tarot-card-back {
84
+ position: absolute;
85
+ inset: 0;
86
+ backface-visibility: hidden;
87
+ }
88
+
89
+ .tarot-card-back {
90
+ transform: rotateY(180deg);
91
+ }
92
+
93
+ /* Thin scrollbar */
94
+ .thin-scrollbar {
95
+ scrollbar-width: thin;
96
+ scrollbar-color: black transparent;
97
+ }
98
+
99
+ p,
100
+ span,
101
+ a,
102
+ cite,
103
+ q,
104
+ em,
105
+ strong,
106
+ abbr,
107
+ time,
108
+ mark,
109
+ address,
110
+ ul,
111
+ ol,
112
+ li,
113
+ dl,
114
+ dd,
115
+ dt,
116
+ div,
117
+ article,
118
+ section,
119
+ aside,
120
+ blockquote,
121
+ figure,
122
+ figcaption,
123
+ main,
124
+ header,
125
+ footer,
126
+ nav,
127
+ details,
128
+ summary,
129
+ label,
130
+ legend,
131
+ fieldset,
132
+ input,
133
+ select,
134
+ option,
135
+ button,
136
+ textarea,
137
+ caption,
138
+ th,
139
+ td,
140
+ samp,
141
+ kbd,
142
+ var {
143
+ font-size: 0.75rem;
144
+ }
@@ -0,0 +1,26 @@
1
+ header {
2
+ max-width: 1024px;
3
+ margin: 2rem auto 0 auto;
4
+ /*padding: 0 0.5rem;*/
5
+ background-color: var(--color-background);
6
+ width: 100%;
7
+ position: sticky;
8
+ z-index: 1035;
9
+ top: 0;
10
+ border-bottom: 1px solid var(--color-border);
11
+ left: 0;
12
+ right: 0;
13
+ }
14
+
15
+ .header-top {
16
+ display: flex;
17
+ justify-content: space-between;
18
+ align-items: center;
19
+ margin-bottom: 1rem;
20
+ }
21
+
22
+ .theme-switcher {
23
+ display: flex;
24
+ align-items: center;
25
+ gap: 0.5rem;
26
+ }