@deepgram/styles 0.0.1 → 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.
package/lib/deepgram.css CHANGED
@@ -4,6 +4,12 @@
4
4
  * A comprehensive, mobile-first CSS framework for consistent Deepgram starter UIs
5
5
  * Built with Tailwind CSS utility classes and custom @apply directives
6
6
  *
7
+ * Features:
8
+ * - Semantic color tokens via Tailwind theme
9
+ * - Mobile-first responsive components
10
+ * - BEM methodology with Tailwind utilities
11
+ * - Consistent spacing and typography
12
+ *
7
13
  * @version 3.0.0 - Tailwind Migration
8
14
  * @author Deepgram Starter UIs Team
9
15
  */
@@ -28,19 +34,19 @@
28
34
  @apply outline-none w-fit;
29
35
  @apply disabled:opacity-50 disabled:cursor-not-allowed;
30
36
  gap: 0.5rem;
31
- height: 3rem; /* 48px */
37
+ height: 3rem;
32
38
  }
33
39
 
34
40
  /* Button Modifier: Small */
35
41
  .dg-btn--sm {
36
42
  @apply px-5 py-2;
37
43
  @apply font-bold text-sm;
38
- height: 2.25rem; /* 36px */
44
+ height: 2.25rem;
39
45
  }
40
46
 
41
47
  /* Button Modifier: Primary - Gradient border with glow effect */
42
48
  .dg-btn--primary {
43
- @apply border border-transparent relative text-white;
49
+ @apply border border-transparent relative dg-text-white;
44
50
  @apply dg-gradient-border dg-glow-cyan-green;
45
51
  }
46
52
 
@@ -55,14 +61,12 @@
55
61
  }
56
62
 
57
63
  .dg-btn--secondary:hover {
58
- @apply border border-white bg-black text-white;
64
+ @apply border border-white bg-black dg-text-white;
59
65
  }
60
66
 
61
67
  /* Button Modifier: Ghost - Transparent with grey border */
62
68
  .dg-btn--ghost {
63
- @apply border text-white;
64
- background: transparent;
65
- border-color: rgb(136, 136, 140);
69
+ @apply border border-dg-slate bg-transparent dg-text-white;
66
70
  }
67
71
 
68
72
  .dg-btn--ghost:hover {
@@ -72,14 +76,11 @@
72
76
 
73
77
  /* Button Modifier: Danger Ghost - For destructive actions */
74
78
  .dg-btn--danger-ghost {
75
- @apply border text-white;
76
- background: transparent;
77
- border-color: rgb(240, 68, 56); /* --dg-danger */
79
+ @apply border border-dg-danger bg-transparent dg-text-white;
78
80
  }
79
81
 
80
82
  .dg-btn--danger-ghost:hover {
81
- @apply border-transparent text-white;
82
- background-color: rgb(240, 68, 56);
83
+ @apply border-transparent bg-dg-danger dg-text-white;
83
84
  }
84
85
 
85
86
  /* Button Modifier: Icon Only */
@@ -158,22 +159,16 @@
158
159
  }
159
160
 
160
161
  .dg-section--bordered {
161
- @apply rounded-lg border;
162
- background-color: rgb(26, 26, 31); /* --dg-charcoal */
163
- border-color: rgb(78, 78, 82); /* --dg-pebble */
162
+ @apply rounded-lg border border-dg-pebble bg-dg-charcoal;
164
163
  }
165
164
 
166
165
  .dg-section--elevated {
167
- @apply rounded-lg border;
168
- background-color: rgb(26, 26, 31); /* --dg-charcoal */
169
- border-color: rgb(78, 78, 82); /* --dg-pebble */
170
- box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
166
+ @apply rounded-lg border border-dg-pebble bg-dg-charcoal shadow-dg-md;
171
167
  }
172
168
 
173
169
  /* Fieldset-style section with legend title */
174
170
  .dg-section--fieldset {
175
- @apply rounded-lg border relative;
176
- border-color: rgb(78, 78, 82); /* --dg-pebble */
171
+ @apply rounded-lg border border-dg-pebble relative;
177
172
  padding-top: 2rem;
178
173
  }
179
174
 
@@ -184,17 +179,10 @@
184
179
  }
185
180
 
186
181
  .dg-section--fieldset .dg-section-heading {
187
- position: absolute;
182
+ @apply absolute bg-dg-background dg-text-muted uppercase tracking-wide font-semibold;
183
+ @apply text-base px-2 m-0;
188
184
  top: -0.75rem;
189
185
  left: 1rem;
190
- background-color: rgb(11, 11, 12); /* --dg-black */
191
- padding: 0 0.5rem;
192
- margin: 0;
193
- font-size: 1rem;
194
- color: rgb(148, 148, 152); /* --dg-slate */
195
- text-transform: uppercase;
196
- letter-spacing: 0.05em;
197
- font-weight: 600;
198
186
  }
199
187
 
200
188
  @media (min-width: 640px) {
@@ -205,135 +193,382 @@
205
193
 
206
194
  /* Card Component */
207
195
  .dg-card {
208
- @apply w-full rounded-lg border;
209
- background-color: rgb(26, 26, 31); /* --dg-charcoal */
210
- border-color: rgb(78, 78, 82); /* --dg-pebble */
211
- padding: 0.75rem;
212
- margin-bottom: 0.75rem;
213
- box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
214
- transition: box-shadow 200ms;
196
+ @apply w-full rounded-lg border border-dg-pebble bg-dg-charcoal flex flex-col;
197
+ @apply p-3 mb-3 shadow-dg-sm transition-shadow duration-200;
215
198
  }
216
199
 
217
200
  @media (min-width: 640px) {
218
201
  .dg-card {
219
- padding: 1rem;
220
- margin-bottom: 1rem;
202
+ @apply p-4 mb-4;
221
203
  }
222
204
  }
223
205
 
224
206
  @media (min-width: 1024px) {
225
207
  .dg-card {
226
- padding: 1.5rem;
208
+ @apply p-6;
227
209
  }
228
210
  }
229
211
 
230
212
  .dg-card:hover {
231
- box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
213
+ @apply shadow-dg-md;
232
214
  }
233
215
 
216
+ /* Card Modifiers */
234
217
  .dg-card--compact {
235
- padding: 0.5rem;
218
+ @apply p-2;
236
219
  }
237
220
 
238
221
  @media (min-width: 640px) {
239
222
  .dg-card--compact {
240
- padding: 0.75rem;
223
+ @apply p-3;
241
224
  }
242
225
  }
243
226
 
244
227
  .dg-card--spacious {
245
- padding: 1rem;
228
+ @apply p-4;
246
229
  }
247
230
 
248
231
  @media (min-width: 640px) {
249
232
  .dg-card--spacious {
250
- padding: 1.5rem;
233
+ @apply p-6;
251
234
  }
252
235
  }
253
236
 
254
237
  @media (min-width: 1024px) {
255
238
  .dg-card--spacious {
256
- padding: 2rem;
239
+ @apply p-8;
257
240
  }
258
241
  }
259
242
 
260
243
  .dg-card--bordered {
261
- border-width: 2px;
262
- border-color: rgb(148, 148, 152); /* --dg-slate */
244
+ @apply border-2 border-dg-slate;
245
+ }
246
+
247
+ /* Card with structured layout (image, header, body, footer) */
248
+ .dg-card--structured {
249
+ @apply p-0 justify-between;
250
+ }
251
+
252
+ /* Selectable Card */
253
+ .dg-card--selectable {
254
+ @apply cursor-pointer transition-all duration-200;
255
+ @apply border-2 border-dg-pebble;
256
+ padding: 1.25rem;
257
+ }
258
+
259
+ .dg-card--selectable:hover {
260
+ @apply border-dg-slate;
261
+ }
262
+
263
+ .dg-card--selectable:has(input[type="radio"]:checked) {
264
+ @apply border-dg-primary;
265
+ background: rgba(19, 239, 149, 0.05);
266
+ }
267
+
268
+ /* Screen reader only utility */
269
+ .dg-sr-only {
270
+ @apply sr-only;
271
+ }
272
+
273
+ .dg-card--selectable input[type="radio"] {
274
+ @apply sr-only;
275
+ }
276
+
277
+ .dg-card--selectable__indicator {
278
+ @apply hidden;
279
+ }
280
+
281
+ .dg-card--selectable__icon {
282
+ @apply dg-text-white;
283
+ margin-right: 0.5rem;
284
+ }
285
+
286
+ .dg-card--selectable__content {
287
+ @apply flex-1 flex flex-col gap-1;
288
+ }
289
+
290
+ @media (max-width: 767px) {
291
+ .dg-card--selectable__content {
292
+ @apply flex-row items-center gap-3;
293
+ }
294
+ }
295
+
296
+ .dg-card--selectable .dg-item-title {
297
+ @apply text-base font-semibold dg-text-white;
298
+ display: flex;
299
+ align-items: center;
300
+ }
301
+
302
+ @media (max-width: 767px) {
303
+ .dg-card--selectable .dg-item-title {
304
+ margin-bottom: 0;
305
+ flex-shrink: 0;
306
+ }
307
+ }
308
+
309
+ @media (min-width: 768px) {
310
+ .dg-card--selectable .dg-item-title {
311
+ margin-bottom: 0.25rem;
312
+ }
313
+ }
314
+
315
+ .dg-card--selectable .dg-prose {
316
+ @apply text-sm dg-text-muted;
317
+ }
318
+
319
+ @media (max-width: 767px) {
320
+ .dg-card--selectable .dg-prose {
321
+ flex: 1;
322
+ white-space: nowrap;
323
+ overflow: hidden;
324
+ text-overflow: ellipsis;
325
+ }
326
+ }
327
+
328
+ /* File Upload Card */
329
+ .dg-card--file-upload {
330
+ @apply cursor-pointer transition-all duration-200;
331
+ @apply border-2 border-dashed border-dg-pebble;
332
+ padding: 1.25rem;
333
+ }
334
+
335
+ .dg-card--file-upload:hover {
336
+ @apply border-dg-slate;
337
+ }
338
+
339
+ .dg-card--file-upload:has(input[type="checkbox"]:checked) {
340
+ @apply border-dg-primary border-solid;
341
+ background: rgba(19, 239, 149, 0.05);
342
+ }
343
+
344
+ .dg-card--file-upload input[type="file"],
345
+ .dg-card--file-upload input[type="checkbox"] {
346
+ @apply sr-only;
347
+ }
348
+
349
+ .dg-card--file-upload__icon {
350
+ @apply dg-text-white;
351
+ margin-right: 0.5rem;
352
+ }
353
+
354
+ .dg-card--file-upload__content {
355
+ @apply flex-1 flex flex-col gap-1;
356
+ }
357
+
358
+ @media (max-width: 767px) {
359
+ .dg-card--file-upload__content {
360
+ @apply flex-row items-center gap-3;
361
+ }
362
+ }
363
+
364
+ .dg-card--file-upload .dg-item-title {
365
+ @apply text-base font-semibold dg-text-white;
366
+ display: flex;
367
+ align-items: center;
368
+ }
369
+
370
+ @media (max-width: 767px) {
371
+ .dg-card--file-upload .dg-item-title {
372
+ margin-bottom: 0;
373
+ flex-shrink: 0;
374
+ }
375
+ }
376
+
377
+ @media (min-width: 768px) {
378
+ .dg-card--file-upload .dg-item-title {
379
+ margin-bottom: 0.25rem;
380
+ }
381
+ }
382
+
383
+ .dg-card--file-upload .dg-prose {
384
+ @apply text-sm dg-text-muted;
385
+ }
386
+
387
+ @media (max-width: 767px) {
388
+ .dg-card--file-upload .dg-prose {
389
+ flex: 1;
390
+ white-space: nowrap;
391
+ overflow: hidden;
392
+ text-overflow: ellipsis;
393
+ }
394
+ }
395
+
396
+ /* Card Image */
397
+ .dg-card__image {
398
+ @apply w-full overflow-hidden flex-shrink-0;
399
+ border-radius: 0.5rem 0.5rem 0 0; /* Rounded top corners only */
400
+ }
401
+
402
+ .dg-card__image img {
403
+ @apply w-full h-full object-cover block;
404
+ }
405
+
406
+ /* Card Image Size Modifiers */
407
+ .dg-card__image--small {
408
+ @apply h-[7.5rem];
409
+ }
410
+
411
+ .dg-card__image--medium {
412
+ @apply h-[10rem];
413
+ }
414
+
415
+ .dg-card__image--large {
416
+ @apply h-[15rem];
417
+ }
418
+
419
+ .dg-card__image--aspect-4-3 {
420
+ @apply aspect-[4/3] h-auto;
421
+ }
422
+
423
+ /* Card Icon */
424
+ .dg-card__icon {
425
+ @apply flex items-center p-3 pt-6;
426
+ }
427
+
428
+ @media (min-width: 640px) {
429
+ .dg-card__icon {
430
+ @apply p-4 pt-8;
431
+ }
432
+ }
433
+
434
+ @media (min-width: 1024px) {
435
+ .dg-card__icon {
436
+ @apply px-6 pb-6 pt-10;
437
+ }
438
+ }
439
+
440
+ .dg-card__icon i,
441
+ .dg-card__icon svg {
442
+ @apply text-5xl dg-text-primary;
443
+ }
444
+
445
+ /* Card Icon Alignment Modifiers */
446
+ .dg-card__icon--left {
447
+ @apply justify-start;
448
+ }
449
+
450
+ .dg-card__icon--center {
451
+ @apply justify-center;
452
+ }
453
+
454
+ .dg-card__icon--right {
455
+ @apply justify-end;
456
+ }
457
+
458
+ /* Card Header */
459
+ .dg-card__header {
460
+ @apply flex flex-col gap-2 p-3;
461
+ }
462
+
463
+ @media (min-width: 640px) {
464
+ .dg-card__header {
465
+ @apply p-4;
466
+ }
467
+ }
468
+
469
+ @media (min-width: 1024px) {
470
+ .dg-card__header {
471
+ @apply px-6 pt-6 pb-0;
472
+ }
473
+ }
474
+
475
+ /* Card Body */
476
+ .dg-card__body {
477
+ @apply flex flex-col gap-3 p-3 flex-1;
478
+ }
479
+
480
+ @media (min-width: 640px) {
481
+ .dg-card__body {
482
+ @apply p-4;
483
+ }
484
+ }
485
+
486
+ @media (min-width: 1024px) {
487
+ .dg-card__body {
488
+ @apply px-6 pb-6 pt-0;
489
+ }
490
+ }
491
+
492
+ /* Card Footer */
493
+ .dg-card__footer {
494
+ @apply flex items-center gap-3 p-3 border-t border-transparent mt-auto;
495
+ }
496
+
497
+ @media (min-width: 640px) {
498
+ .dg-card__footer {
499
+ @apply p-4;
500
+ }
501
+ }
502
+
503
+ @media (min-width: 1024px) {
504
+ .dg-card__footer {
505
+ @apply p-6;
506
+ }
507
+ }
508
+
509
+ /* Card Footer with Border */
510
+ .dg-card__footer--bordered {
511
+ @apply border-t-dg-pebble;
263
512
  }
264
513
 
265
514
  /* Code Block Component */
266
515
  .dg-code-block {
267
- @apply w-full rounded-lg border overflow-auto;
268
- background-color: rgb(26, 26, 31);
269
- border-color: rgb(78, 78, 82);
270
- padding: 0.5rem;
271
- margin: 0.75rem 0;
272
- max-height: 200px;
516
+ @apply w-full rounded-lg border border-dg-pebble bg-dg-charcoal overflow-auto;
517
+ @apply p-2 my-3 max-h-[12.5rem];
273
518
  -webkit-overflow-scrolling: touch;
274
519
  }
275
520
 
276
521
  @media (min-width: 640px) {
277
522
  .dg-code-block {
278
- padding: 0.75rem;
279
- margin: 1rem 0;
280
- max-height: 250px;
523
+ @apply p-3 my-4 max-h-[15.625rem];
281
524
  }
282
525
  }
283
526
 
284
527
  @media (min-width: 1024px) {
285
528
  .dg-code-block {
286
- max-height: 300px;
529
+ @apply max-h-[18.75rem];
287
530
  }
288
531
  }
289
532
 
290
533
  .dg-code-block pre {
291
- @apply m-0 p-0;
292
- font-family: "JetBrains Mono", "Fira Code", Consolas, monospace;
293
- font-size: 0.75rem;
534
+ @apply m-0 p-0 font-dg-mono text-xs dg-text-fog whitespace-pre-wrap break-words;
294
535
  line-height: 1.3;
295
- color: rgb(237, 237, 242); /* --dg-fog-gray */
296
- white-space: pre-wrap;
297
- word-wrap: break-word;
298
536
  }
299
537
 
300
538
  @media (min-width: 640px) {
301
539
  .dg-code-block pre {
302
- font-size: 0.875rem;
540
+ @apply text-sm;
303
541
  }
304
542
  }
305
543
 
306
544
  .dg-code-block--compact {
307
- max-height: 120px;
308
- padding: 0.25rem;
545
+ @apply max-h-[7.5rem] p-1;
309
546
  }
310
547
 
311
548
  @media (min-width: 640px) {
312
549
  .dg-code-block--compact {
313
- max-height: 150px;
314
- padding: 0.5rem;
550
+ @apply max-h-[9.375rem] p-2;
315
551
  }
316
552
  }
317
553
 
318
554
  .dg-code-block--tall {
319
- max-height: 300px;
555
+ @apply max-h-[18.75rem];
320
556
  }
321
557
 
322
558
  @media (min-width: 640px) {
323
559
  .dg-code-block--tall {
324
- max-height: 400px;
560
+ @apply max-h-[25rem];
325
561
  }
326
562
  }
327
563
 
328
564
  @media (min-width: 1024px) {
329
565
  .dg-code-block--tall {
330
- max-height: 500px;
566
+ @apply max-h-[31.25rem];
331
567
  }
332
568
  }
333
569
 
334
570
  .dg-code-block--no-scroll {
335
- @apply overflow-visible;
336
- max-height: none;
571
+ @apply overflow-visible max-h-none;
337
572
  }
338
573
 
339
574
  /* ==========================================================================
@@ -342,156 +577,117 @@
342
577
 
343
578
  /* Hero Title */
344
579
  .dg-hero-title {
345
- @apply text-center font-bold;
346
- font-family: "Noto Sans", sans-serif;
347
- background: linear-gradient(90deg, rgb(20, 154, 251) -30.22%, rgb(19, 239, 149) 78.93%);
348
- -webkit-background-clip: text;
580
+ @apply text-center font-bold font-dg-noto text-5xl leading-tight mb-6;
581
+ @apply bg-gradient-to-r from-dg-secondary to-dg-primary bg-clip-text;
349
582
  -webkit-text-fill-color: transparent;
350
- background-clip: text;
351
583
  letter-spacing: -0.02em;
352
584
  font-feature-settings: "liga" 0, "dlig" 0, "hlig" 0, "ordn" 0, "ss09", "kern";
353
585
  font-kerning: normal;
354
- font-size: 3rem;
355
- line-height: 1.1;
356
- margin: 0 0 1.5rem 0;
357
586
  }
358
587
 
359
588
  @media (max-width: 1024px) {
360
589
  .dg-hero-title {
361
- font-size: 2.5rem;
590
+ @apply text-4xl;
362
591
  }
363
592
  }
364
593
 
365
594
  @media (max-width: 768px) {
366
595
  .dg-hero-title {
367
- font-size: 2rem;
596
+ @apply text-3xl;
368
597
  }
369
598
  }
370
599
 
371
600
  @media (max-width: 640px) {
372
601
  .dg-hero-title {
373
- font-size: 1.75rem;
602
+ @apply text-2xl;
374
603
  }
375
604
  }
376
605
 
377
606
  /* Hero Section Container */
378
607
  .dg-hero {
379
- @apply w-full text-center;
380
- padding: 4rem 1rem;
608
+ @apply w-full text-center py-16 px-4;
381
609
  }
382
610
 
383
611
  @media (max-width: 768px) {
384
612
  .dg-hero {
385
- padding: 3rem 1rem;
613
+ @apply py-12 px-4;
386
614
  }
387
615
  }
388
616
 
389
617
  @media (max-width: 640px) {
390
618
  .dg-hero {
391
- padding: 2rem 1rem;
619
+ @apply py-8 px-4;
392
620
  }
393
621
  }
394
622
 
395
623
  /* Hero Content Container */
396
624
  .dg-hero__content {
397
- @apply flex flex-col;
398
- gap: 1.5rem;
399
- margin-left: auto;
400
- margin-right: auto;
401
- max-width: 850px;
625
+ @apply flex flex-col gap-6 mx-auto max-w-[53.125rem];
402
626
  }
403
627
 
404
628
  @media (max-width: 768px) {
405
629
  .dg-hero__content {
406
- gap: 1.25rem;
630
+ @apply gap-5;
407
631
  }
408
632
  }
409
633
 
410
634
  /* Hero Announcement Banner */
411
635
  .dg-hero__announcement {
412
- @apply inline-flex items-center justify-center;
413
- @apply rounded-full border;
414
- background-color: rgba(0, 0, 0, 0.5);
415
- border-color: rgba(148, 148, 152, 0.3);
416
- padding: 0.5rem 1.25rem;
417
- margin: 0 auto 0.5rem;
418
- text-decoration: none;
419
- transition: all 200ms;
420
- cursor: pointer;
421
- width: fit-content;
422
- gap: 0.75rem;
636
+ @apply inline-flex items-center justify-center rounded-full border;
637
+ @apply bg-dg-translucent border-dg-slate/30 py-2 px-5 mx-auto mb-2;
638
+ @apply no-underline cursor-pointer w-fit gap-3 transition-all duration-200;
423
639
  }
424
640
 
425
641
  .dg-hero__announcement:hover {
426
- border-color: rgb(19, 239, 149);
642
+ @apply border-dg-primary -translate-y-0.5;
427
643
  background-color: rgba(19, 239, 149, 0.1);
428
- transform: translateY(-2px);
429
- box-shadow: 0 4px 12px rgba(19, 239, 149, 0.15);
644
+ box-shadow: 0 0.25rem 0.75rem rgba(19, 239, 149, 0.15);
430
645
  }
431
646
 
432
647
  .dg-hero__announcement-text {
433
- color: rgb(251, 251, 255);
434
- font-size: 0.875rem;
435
- font-weight: 400;
436
- white-space: nowrap;
648
+ @apply dg-text-white text-sm font-normal whitespace-nowrap;
437
649
  }
438
650
 
439
651
  @media (max-width: 640px) {
440
652
  .dg-hero__announcement-text {
441
- font-size: 0.75rem;
442
- white-space: normal;
653
+ @apply text-xs whitespace-normal;
443
654
  }
444
655
  }
445
656
 
446
657
  .dg-hero__announcement-cta {
447
- @apply inline-flex items-center;
448
- color: rgb(20, 154, 251);
449
- font-size: 0.875rem;
450
- font-weight: 600;
451
- gap: 0.5rem;
452
- transition: gap 200ms;
658
+ @apply inline-flex items-center dg-text-secondary text-sm font-semibold gap-2 transition-[gap] duration-200;
453
659
  }
454
660
 
455
661
  .dg-hero__announcement:hover .dg-hero__announcement-cta {
456
- gap: 0.75rem;
662
+ @apply gap-3;
457
663
  }
458
664
 
459
665
  @media (max-width: 640px) {
460
666
  .dg-hero__announcement-cta {
461
- font-size: 0.75rem;
667
+ @apply text-xs;
462
668
  }
463
669
  }
464
670
 
465
671
  /* Hero Body Text */
466
672
  .dg-hero__body {
467
- @apply text-center;
468
- color: rgb(237, 237, 242);
469
- font-size: 1.125rem;
470
- line-height: 1.75;
471
- font-weight: 400;
472
- margin: 0 auto;
473
- max-width: 850px;
673
+ @apply text-center dg-text-fog text-lg leading-7 font-normal mx-auto max-w-[53.125rem];
474
674
  }
475
675
 
476
676
  @media (max-width: 768px) {
477
677
  .dg-hero__body {
478
- font-size: 1rem;
479
- line-height: 1.6;
678
+ @apply text-base leading-relaxed;
480
679
  }
481
680
  }
482
681
 
483
682
  @media (max-width: 640px) {
484
683
  .dg-hero__body {
485
- font-size: 0.9375rem;
486
- line-height: 1.5;
684
+ @apply text-[0.9375rem] leading-normal;
487
685
  }
488
686
  }
489
687
 
490
688
  /* Hero Actions */
491
689
  .dg-hero__actions {
492
- @apply flex items-center justify-center flex-wrap;
493
- gap: 1rem;
494
- margin-top: 0.5rem;
690
+ @apply flex items-center justify-center flex-wrap gap-4 mt-2;
495
691
  }
496
692
 
497
693
  @media (max-width: 640px) {
@@ -506,52 +702,100 @@
506
702
 
507
703
  /* Section Heading */
508
704
  .dg-section-heading {
509
- @apply font-semibold;
510
- font-family: "Noto Sans", sans-serif;
511
- font-size: 1.5rem;
512
- color: rgb(251, 251, 255); /* --dg-ghost-white */
513
- margin: 0 0 1.5rem 0;
705
+ @apply font-semibold font-dg-noto text-2xl dg-text-white mb-6;
706
+ @apply flex flex-wrap items-baseline gap-2;
514
707
  }
515
708
 
516
709
  @media (max-width: 640px) {
517
710
  .dg-section-heading {
518
- font-size: 1.25rem;
519
- margin-bottom: 0.75rem;
711
+ @apply text-xl mb-3 gap-1.5;
712
+ }
713
+ }
714
+
715
+ /* Small text within section heading */
716
+ .dg-section-heading small {
717
+ @apply font-normal text-base dg-text-muted;
718
+ }
719
+
720
+ @media (max-width: 640px) {
721
+ .dg-section-heading small {
722
+ @apply text-sm;
723
+ }
724
+ }
725
+
726
+ /* Page Heading */
727
+ .dg-page-heading {
728
+ @apply mb-8;
729
+ }
730
+
731
+ @media (max-width: 640px) {
732
+ .dg-page-heading {
733
+ @apply mb-6;
734
+ }
735
+ }
736
+
737
+ .dg-page-heading__title {
738
+ @apply font-semibold font-dg-noto text-4xl dg-text-white mb-2 leading-tight;
739
+ }
740
+
741
+ @media (max-width: 768px) {
742
+ .dg-page-heading__title {
743
+ @apply text-3xl;
744
+ }
745
+ }
746
+
747
+ @media (max-width: 640px) {
748
+ .dg-page-heading__title {
749
+ @apply text-2xl;
750
+ }
751
+ }
752
+
753
+ .dg-page-heading__description {
754
+ @apply dg-text-muted text-lg leading-relaxed m-0 max-w-[65ch];
755
+ }
756
+
757
+ @media (max-width: 768px) {
758
+ .dg-page-heading__description {
759
+ @apply text-base;
760
+ }
761
+ }
762
+
763
+ @media (max-width: 640px) {
764
+ .dg-page-heading__description {
765
+ @apply text-[0.9375rem];
520
766
  }
521
767
  }
522
768
 
523
769
  /* Card Heading */
524
770
  .dg-card-heading {
525
- @apply font-medium;
526
- font-family: "Noto Sans", sans-serif;
527
- font-size: 1.25rem;
528
- color: rgb(251, 251, 255);
529
- margin: 0 0 0.75rem 0;
771
+ @apply font-medium font-dg-noto text-xl dg-text-white mb-3;
772
+ @apply flex flex-wrap items-baseline gap-1.5;
773
+ }
774
+
775
+ /* Small text within card heading */
776
+ .dg-card-heading small {
777
+ @apply font-normal text-sm dg-text-muted;
530
778
  }
531
779
 
532
780
  /* Item Title */
533
781
  .dg-item-title {
534
- @apply font-medium;
535
- font-family: "Noto Sans", sans-serif;
536
- font-size: 1rem;
537
- color: rgb(251, 251, 255);
538
- margin: 0 0 0.25rem 0;
782
+ @apply font-medium font-dg-noto text-base dg-text-white mb-1;
783
+ @apply flex flex-wrap items-baseline gap-1;
784
+ }
785
+
786
+ /* Small text within item title */
787
+ .dg-item-title small {
788
+ @apply font-normal text-xs dg-text-muted;
539
789
  }
540
790
 
541
791
  /* Prose Text */
542
792
  .dg-prose {
543
- @apply w-full;
544
- color: rgb(237, 237, 242); /* --dg-fog-gray */
545
- font-size: 0.875rem;
546
- line-height: 1.4;
547
- margin-bottom: 0.75rem;
793
+ @apply w-full dg-text-fog text-sm leading-snug mb-3;
548
794
  }
549
795
 
550
796
  @media (min-width: 640px) {
551
797
  .dg-prose {
552
- font-size: 1rem;
553
- margin-bottom: 1rem;
554
- max-width: 65ch;
798
+ @apply text-base mb-4 max-w-[65ch];
555
799
  }
556
800
  }
557
801
 
@@ -560,110 +804,283 @@
560
804
  }
561
805
 
562
806
  .dg-prose--large {
563
- font-size: 1rem;
807
+ @apply text-base;
564
808
  }
565
809
 
566
810
  @media (min-width: 640px) {
567
811
  .dg-prose--large {
568
- font-size: 1.125rem;
812
+ @apply text-lg;
569
813
  }
570
814
  }
571
815
 
572
816
  @media (min-width: 1024px) {
573
817
  .dg-prose--large {
574
- font-size: 1.25rem;
818
+ @apply text-xl;
575
819
  }
576
820
  }
577
821
 
578
822
  .dg-prose--small {
579
- font-size: 0.75rem;
580
- color: rgb(225, 225, 229); /* --dg-platinum */
823
+ @apply text-xs dg-text-muted;
581
824
  }
582
825
 
583
826
  @media (min-width: 640px) {
584
827
  .dg-prose--small {
585
- font-size: 0.875rem;
828
+ @apply text-sm;
586
829
  }
587
830
  }
588
831
 
832
+ /* ==========================================================================
833
+ FORM COMPONENTS
834
+ ========================================================================== */
835
+
836
+ /* Form Input Base Styles */
837
+ .dg-input {
838
+ @apply w-full px-4 py-3 rounded border border-dg-pebble bg-dg-charcoal;
839
+ @apply dg-text-white font-dg-sans text-sm;
840
+ @apply outline-none transition-all duration-300;
841
+ @apply shadow-dg-sm;
842
+ height: 2.75rem;
843
+ }
844
+
845
+ .dg-input::placeholder {
846
+ @apply dg-text-muted;
847
+ }
848
+
849
+ .dg-input:focus {
850
+ @apply border-dg-primary;
851
+ box-shadow: 0 0 0 0.0625rem theme("colors.dg-primary");
852
+ }
853
+
854
+ .dg-input:disabled {
855
+ @apply opacity-50 cursor-not-allowed;
856
+ }
857
+
858
+ .dg-input--inline {
859
+ @apply min-w-[12.5rem];
860
+ }
861
+
862
+ .dg-input--full {
863
+ @apply max-w-none;
864
+ }
865
+
866
+ /* Select (dropdown) specific */
867
+ .dg-input[type="select"],
868
+ select.dg-input {
869
+ @apply appearance-none;
870
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='rgb(255,255,255)' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");
871
+ background-position: right 0.75rem center;
872
+ background-repeat: no-repeat;
873
+ background-size: 1.5em 1.5em;
874
+ padding-right: 2.5rem;
875
+ }
876
+
877
+ /* Textarea */
878
+ .dg-textarea {
879
+ @apply dg-input;
880
+ min-height: 6.25rem;
881
+ resize: vertical;
882
+ height: auto;
883
+ }
884
+
885
+ /* Checkbox */
886
+ .dg-checkbox {
887
+ @apply appearance-none w-5 h-5 rounded border border-dg-pebble bg-dg-charcoal;
888
+ @apply cursor-pointer transition-all duration-200;
889
+ @apply flex-shrink-0;
890
+ position: relative;
891
+ }
892
+
893
+ .dg-checkbox:checked {
894
+ @apply bg-dg-primary border-dg-primary;
895
+ }
896
+
897
+ .dg-checkbox:checked::after {
898
+ content: "";
899
+ position: absolute;
900
+ left: 0.375rem;
901
+ top: 0.125rem;
902
+ width: 0.3125rem;
903
+ height: 0.625rem;
904
+ border: solid black;
905
+ border-width: 0 0.125rem 0.125rem 0;
906
+ transform: rotate(45deg);
907
+ }
908
+
909
+ .dg-checkbox:focus {
910
+ @apply outline-none;
911
+ box-shadow: 0 0 0 0.125rem theme("colors.dg-primary/50");
912
+ }
913
+
914
+ /* Checkbox Label */
915
+ .dg-checkbox-label {
916
+ @apply flex items-start gap-2 cursor-pointer text-sm dg-text-fog;
917
+ }
918
+
919
+ .dg-checkbox-label:hover .dg-checkbox {
920
+ @apply border-dg-slate;
921
+ }
922
+
923
+ /* Checkbox Description Container */
924
+ .dg-checkbox-description {
925
+ @apply flex flex-col gap-2;
926
+ }
927
+
928
+ /* Checkbox Group Container */
929
+ .dg-checkbox-group {
930
+ @apply flex flex-col gap-3;
931
+ }
932
+
933
+ /* Form Field */
934
+ .dg-form-field {
935
+ @apply flex flex-col gap-3 mb-4 w-full;
936
+ }
937
+
938
+ @media (min-width: 640px) {
939
+ .dg-form-field {
940
+ @apply max-w-md;
941
+ }
942
+ }
943
+
944
+ .dg-form-field--full {
945
+ @apply max-w-none;
946
+ }
947
+
948
+ /* Form Field Error State */
949
+ .dg-form-field--error .dg-input,
950
+ .dg-form-field--error .dg-textarea {
951
+ @apply border-dg-danger;
952
+ }
953
+
954
+ .dg-form-field--error .dg-form-helper {
955
+ @apply dg-text-danger;
956
+ }
957
+
958
+ /* Form Field Success State */
959
+ .dg-form-field--success .dg-input,
960
+ .dg-form-field--success .dg-textarea {
961
+ @apply border-dg-success;
962
+ }
963
+
964
+ .dg-form-field--success .dg-form-helper {
965
+ @apply dg-text-success;
966
+ }
967
+
968
+ /* Form Label */
969
+ .dg-form-label {
970
+ @apply text-sm font-medium dg-text-white;
971
+ }
972
+
973
+ /* Form Error Message (deprecated - use dg-form-helper with dg-form-field--error) */
974
+ .dg-form-error {
975
+ @apply text-xs dg-text-danger block;
976
+ margin: 0;
977
+ }
978
+
979
+ /* Form Helper Text */
980
+ .dg-form-helper {
981
+ @apply text-xs dg-text-muted block;
982
+ margin: 0;
983
+ }
984
+
985
+ /* File Upload / Drag & Drop Zone */
986
+ .dg-drag-drop-zone {
987
+ @apply relative border-2 border-dashed border-dg-pebble rounded-lg;
988
+ @apply bg-dg-charcoal transition-all duration-200;
989
+ @apply flex flex-col items-center justify-center gap-3;
990
+ @apply cursor-pointer;
991
+ padding: 3rem 2rem;
992
+ min-height: 12.5rem;
993
+ }
994
+
995
+ .dg-drag-drop-zone:hover {
996
+ @apply border-dg-slate bg-dg-background;
997
+ }
998
+
999
+ .dg-drag-drop-zone.drag-over {
1000
+ @apply border-dg-primary bg-dg-translucent;
1001
+ }
1002
+
1003
+ .dg-drag-drop-zone__input {
1004
+ @apply absolute inset-0 w-full h-full opacity-0 cursor-pointer;
1005
+ }
1006
+
1007
+ .dg-drag-drop-zone__icon {
1008
+ @apply text-5xl dg-text-muted;
1009
+ }
1010
+
1011
+ .dg-drag-drop-zone:hover .dg-drag-drop-zone__icon {
1012
+ @apply dg-text-primary;
1013
+ }
1014
+
1015
+ .dg-drag-drop-zone__text {
1016
+ @apply text-base dg-text-white font-medium;
1017
+ }
1018
+
1019
+ .dg-drag-drop-zone__hint {
1020
+ @apply text-sm dg-text-muted;
1021
+ }
1022
+
589
1023
  /* ==========================================================================
590
1024
  STATUS & FEEDBACK COMPONENTS
591
1025
  ========================================================================== */
592
1026
 
593
1027
  /* Status Banner */
594
1028
  .dg-status {
595
- @apply w-full italic;
596
- color: rgb(237, 237, 242);
597
- padding: 0.25rem 0;
598
- margin: 0.5rem 0;
599
- font-size: 0.875rem;
600
- line-height: 1.3;
1029
+ @apply w-full italic dg-text-fog text-sm leading-snug py-1 my-2;
601
1030
  }
602
1031
 
603
1032
  @media (min-width: 640px) {
604
1033
  .dg-status {
605
- font-size: 1rem;
606
- padding: 0.5rem 0;
607
- margin: 0.75rem 0;
1034
+ @apply text-base py-2 my-3;
608
1035
  }
609
1036
  }
610
1037
 
611
1038
  .dg-status--info {
612
- color: rgb(237, 237, 242);
1039
+ @apply dg-text-fog;
613
1040
  }
614
1041
 
615
1042
  .dg-status--success {
616
- color: rgb(18, 183, 106); /* --dg-success */
1043
+ @apply dg-text-success;
617
1044
  }
618
1045
 
619
1046
  .dg-status--warning {
620
- color: rgb(254, 200, 75); /* --dg-warning */
1047
+ @apply dg-text-warning;
621
1048
  }
622
1049
 
623
1050
  .dg-status--error {
624
- color: rgb(240, 68, 56); /* --dg-danger */
1051
+ @apply dg-text-danger;
625
1052
  }
626
1053
 
627
1054
  .dg-status--primary {
628
- color: rgb(19, 239, 147); /* --dg-primary */
1055
+ @apply dg-text-primary;
629
1056
  }
630
1057
 
631
1058
  .dg-status--secondary {
632
- color: rgb(20, 154, 251); /* --dg-secondary */
1059
+ @apply dg-text-secondary;
633
1060
  }
634
1061
 
635
1062
  .dg-status--with-icon {
636
- @apply flex items-start;
637
- gap: 0.25rem;
1063
+ @apply flex items-start gap-1;
638
1064
  }
639
1065
 
640
1066
  .dg-status--with-icon .dg-status__icon {
641
- @apply flex-shrink-0;
642
- font-size: 1em;
643
- margin-top: 0.1em;
1067
+ @apply flex-shrink-0 text-[1em] mt-[0.1em];
644
1068
  }
645
1069
 
646
1070
  .dg-status--compact {
647
- margin: 0.25rem 0;
648
- padding: 0.125rem 0;
649
- font-size: 0.75rem;
1071
+ @apply my-1 py-0.5 text-xs;
650
1072
  }
651
1073
 
652
1074
  @media (min-width: 640px) {
653
1075
  .dg-status--compact {
654
- font-size: 0.875rem;
1076
+ @apply text-sm;
655
1077
  }
656
1078
  }
657
1079
 
658
1080
  /* Spinner */
659
1081
  .dg-spinner {
660
- @apply rounded-full;
661
- width: 40px;
662
- height: 40px;
663
- border: 3px solid rgb(78, 78, 82);
664
- border-top: 3px solid rgb(19, 239, 147);
665
- animation: dg-spin 1s linear infinite;
666
- margin: 0 auto 0.75rem;
1082
+ @apply rounded-full size-10 border-[3px] border-dg-pebble border-t-dg-primary;
1083
+ @apply mx-auto mb-3 animate-spin;
667
1084
  }
668
1085
 
669
1086
  @keyframes dg-spin {
@@ -677,18 +1094,12 @@
677
1094
 
678
1095
  /* Processing Title */
679
1096
  .dg-processing-title {
680
- @apply font-medium;
681
- font-family: "Noto Sans", sans-serif;
682
- font-size: 1.25rem;
683
- color: rgb(251, 251, 255);
684
- margin: 0 0 0.25rem 0;
1097
+ @apply font-medium font-dg-noto text-xl dg-text-white mb-1;
685
1098
  }
686
1099
 
687
1100
  /* Modal Overlay */
688
1101
  .dg-modal-overlay {
689
- @apply hidden fixed inset-0 items-center justify-center;
690
- background-color: rgba(0, 0, 0, 0.8);
691
- z-index: 50;
1102
+ @apply hidden fixed inset-0 items-center justify-center bg-black/80 z-50;
692
1103
  }
693
1104
 
694
1105
  .dg-modal-overlay.visible,
@@ -697,9 +1108,7 @@
697
1108
  }
698
1109
 
699
1110
  .dg-modal-content {
700
- @apply text-center;
701
- max-width: 400px;
702
- margin: 0.75rem;
1111
+ @apply text-center max-w-[25rem] m-3;
703
1112
  }
704
1113
 
705
1114
  /* ==========================================================================
@@ -713,28 +1122,23 @@
713
1122
 
714
1123
  @media (min-width: 640px) {
715
1124
  .dg-constrain-width {
716
- max-width: 960px;
717
- margin-left: auto;
718
- margin-right: auto;
1125
+ @apply max-w-[70rem] mx-auto;
719
1126
  }
720
1127
  }
721
1128
 
722
1129
  /* Center Horizontally - Complements dg-constrain-width */
723
1130
  .dg-center-h {
724
- margin-left: auto;
725
- margin-right: auto;
1131
+ @apply mx-auto;
726
1132
  }
727
1133
 
728
1134
  /* Responsive Grid */
729
1135
  .dg-grid-mobile-stack {
730
- @apply flex flex-col;
731
- gap: 1rem;
1136
+ @apply flex flex-col gap-4;
732
1137
  }
733
1138
 
734
1139
  @media (min-width: 640px) {
735
1140
  .dg-grid-mobile-stack {
736
- @apply flex-row;
737
- gap: 1rem;
1141
+ @apply flex-row gap-4;
738
1142
  }
739
1143
  }
740
1144
 
@@ -744,8 +1148,7 @@
744
1148
 
745
1149
  /* Action Group */
746
1150
  .dg-action-group {
747
- @apply flex flex-wrap justify-center;
748
- gap: 1rem;
1151
+ @apply flex flex-wrap justify-center gap-4;
749
1152
  }
750
1153
 
751
1154
  @media (max-width: 640px) {
@@ -758,15 +1161,328 @@
758
1161
  }
759
1162
  }
760
1163
 
1164
+ /* Header */
1165
+ .dg-header {
1166
+ @apply w-full;
1167
+ background: #050506; /* dg-almost-black */
1168
+ padding: 1rem 1.5rem;
1169
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
1170
+ }
1171
+
1172
+ .dg-header__container {
1173
+ @apply flex items-center justify-between max-w-screen-2xl mx-auto;
1174
+ }
1175
+
1176
+ .dg-header__logo {
1177
+ @apply flex items-center gap-3;
1178
+ }
1179
+
1180
+ .dg-header__logo-image {
1181
+ @apply h-8 w-auto;
1182
+ }
1183
+
1184
+ .dg-header__logo-text {
1185
+ @apply font-dg-noto font-bold text-xl dg-text-white;
1186
+ }
1187
+
1188
+ .dg-header__nav {
1189
+ @apply flex items-center gap-4;
1190
+ }
1191
+
1192
+ .dg-header__profile-link {
1193
+ @apply -m-1.5 p-1.5 block;
1194
+ }
1195
+
1196
+ .dg-header__profile-avatar {
1197
+ @apply size-8 rounded-full bg-gray-800 outline -outline-offset-1 outline-white/10;
1198
+ }
1199
+
1200
+ @media (max-width: 768px) {
1201
+ .dg-header {
1202
+ padding: 0.75rem 1rem;
1203
+ }
1204
+
1205
+ .dg-header__logo-text {
1206
+ @apply text-lg;
1207
+ }
1208
+ }
1209
+
761
1210
  /* Footer */
762
1211
  .dg-footer {
763
- @apply text-center border-t;
764
- border-color: rgb(78, 78, 82);
765
- margin-top: 4rem;
1212
+ @apply text-center border-t border-dg-pebble mt-16;
766
1213
  }
767
1214
 
768
1215
  /* Text Center Utility */
769
1216
  .dg-text-center {
770
1217
  @apply text-center;
771
1218
  }
1219
+
1220
+ /* Text Color Utilities */
1221
+ .dg-text-danger {
1222
+ @apply text-dg-danger;
1223
+ }
1224
+
1225
+ .dg-text-success {
1226
+ @apply text-dg-success;
1227
+ }
1228
+
1229
+ .dg-text-warning {
1230
+ @apply text-dg-warning;
1231
+ }
1232
+
1233
+ .dg-text-primary {
1234
+ @apply text-dg-primary;
1235
+ }
1236
+
1237
+ .dg-text-secondary {
1238
+ @apply text-dg-secondary;
1239
+ }
1240
+
1241
+ .dg-text-muted {
1242
+ @apply text-dg-muted;
1243
+ }
1244
+
1245
+ .dg-text-fog {
1246
+ @apply text-dg-fog;
1247
+ }
1248
+
1249
+ .dg-text-white {
1250
+ @apply text-white;
1251
+ }
1252
+
1253
+ /* Newsletter Layout */
1254
+ .dg-newsletter-container {
1255
+ @apply flex flex-col gap-4;
1256
+ }
1257
+
1258
+ .dg-newsletter-container--compact {
1259
+ @apply flex flex-col gap-3;
1260
+ }
1261
+
1262
+ .dg-newsletter-form {
1263
+ @apply flex flex-col gap-4;
1264
+ }
1265
+
1266
+ .dg-newsletter-form--compact {
1267
+ @apply flex flex-col gap-3;
1268
+ }
1269
+
1270
+ .dg-newsletter-form--inline {
1271
+ @apply flex gap-2 w-full;
1272
+ }
1273
+
1274
+ @media (min-width: 640px) {
1275
+ .dg-newsletter-form--inline {
1276
+ @apply w-auto;
1277
+ }
1278
+ }
1279
+
1280
+ .dg-newsletter-header {
1281
+ @apply flex flex-col gap-3 items-start;
1282
+ }
1283
+
1284
+ @media (min-width: 640px) {
1285
+ .dg-newsletter-header {
1286
+ @apply flex-row items-center;
1287
+ }
1288
+ }
1289
+
1290
+ .dg-newsletter-header__content {
1291
+ @apply flex-1;
1292
+ }
1293
+
1294
+ .dg-newsletter-header__actions {
1295
+ @apply w-full;
1296
+ }
1297
+
1298
+ @media (min-width: 640px) {
1299
+ .dg-newsletter-header__actions {
1300
+ @apply w-auto;
1301
+ }
1302
+ }
1303
+
1304
+ /* Logo Container */
1305
+ .dg-logo-container {
1306
+ @apply flex justify-center;
1307
+ }
1308
+
1309
+ .dg-logo {
1310
+ @apply h-8 w-auto;
1311
+ }
1312
+
1313
+ /* Social Links Container */
1314
+ .dg-social-links {
1315
+ @apply flex justify-center gap-4;
1316
+ }
1317
+
1318
+ /* Typography Utilities */
1319
+ .dg-text-tagline {
1320
+ @apply text-center dg-text-fog text-sm;
1321
+ }
1322
+
1323
+ .dg-text-subtitle {
1324
+ @apply dg-text-fog text-sm;
1325
+ }
1326
+
1327
+ .dg-text-heading {
1328
+ @apply dg-text-white text-base font-medium;
1329
+ }
1330
+
1331
+ .dg-text-heading--with-margin {
1332
+ @apply dg-text-white text-base font-medium mb-1;
1333
+ }
1334
+
1335
+ .dg-text-legal {
1336
+ @apply text-xs dg-text-muted text-center;
1337
+ }
1338
+
1339
+ /* ==========================================================================
1340
+ MULTI-COLUMN LAYOUT COMPONENTS
1341
+
1342
+ Responsive collapse pattern:
1343
+ - Mobile (< 768px): All columns stacked vertically
1344
+ - Tablet (768px+): Right sidebar moves to side, left stacked on top
1345
+ - Desktop (1024px+): All three columns side-by-side
1346
+ ========================================================================== */
1347
+
1348
+ /* Column Container - parent wrapper for all columns */
1349
+ .dg-columns {
1350
+ @apply flex flex-col w-full;
1351
+ }
1352
+
1353
+ /* At tablet: show right sidebar on the side */
1354
+ @media (min-width: 768px) {
1355
+ .dg-columns {
1356
+ @apply flex-row;
1357
+ }
1358
+ }
1359
+
1360
+ /* Column Wrapper - groups left sidebar and main content together */
1361
+ .dg-columns__wrapper {
1362
+ @apply flex flex-col flex-1 min-w-0;
1363
+ }
1364
+
1365
+ /* At desktop: show left sidebar on the side */
1366
+ @media (min-width: 1024px) {
1367
+ .dg-columns__wrapper {
1368
+ @apply flex-row;
1369
+ }
1370
+ }
1371
+
1372
+ /* Base Column - padding for all columns */
1373
+ .dg-column {
1374
+ @apply px-4 py-6 min-w-0;
1375
+ }
1376
+
1377
+ @media (min-width: 640px) {
1378
+ .dg-column {
1379
+ @apply px-6;
1380
+ }
1381
+ }
1382
+
1383
+ /* Main Content Column - always fills available space */
1384
+ .dg-column--main {
1385
+ @apply flex-1;
1386
+ }
1387
+
1388
+ /* Left Sidebar - fixed width on desktop, full width on mobile/tablet */
1389
+ .dg-column--sidebar-left {
1390
+ /* Layout only - no colors */
1391
+ }
1392
+
1393
+ @media (min-width: 1024px) {
1394
+ .dg-column--sidebar-left {
1395
+ @apply w-48 flex-shrink-0;
1396
+ }
1397
+
1398
+ .dg-column--sidebar-left.dg-column--sm {
1399
+ @apply w-64 flex-shrink-0;
1400
+ }
1401
+
1402
+ .dg-column--sidebar-left.dg-column--lg {
1403
+ @apply w-96 flex-shrink-0;
1404
+ }
1405
+
1406
+ .dg-column--sidebar-left.dg-column--xl {
1407
+ @apply w-128 flex-shrink-0;
1408
+ }
1409
+ }
1410
+
1411
+ /* Right Sidebar - fixed width on tablet+, full width on mobile */
1412
+ .dg-column--sidebar-right {
1413
+ /* Layout only - no colors */
1414
+ position: relative;
1415
+ }
1416
+
1417
+ /* Between 768px and 1280px: Floating sidebar with toggle */
1418
+ @media (min-width: 768px) and (max-width: 1279px) {
1419
+ .dg-column--sidebar-right {
1420
+ position: fixed;
1421
+ top: 65px; /* Account for header height */
1422
+ right: 0;
1423
+ height: calc(100vh - 65px);
1424
+ @apply w-64 flex-shrink-0;
1425
+ transition: transform 300ms ease;
1426
+ z-index: 20;
1427
+ box-shadow: -4px 0 16px rgba(0, 0, 0, 0.5);
1428
+ }
1429
+
1430
+ .dg-column--sidebar-right.dg-column--sm {
1431
+ @apply w-80;
1432
+ }
1433
+
1434
+ .dg-column--sidebar-right.dg-column--lg {
1435
+ @apply w-96;
1436
+ }
1437
+
1438
+ .dg-column--sidebar-right.dg-column--xl {
1439
+ @apply w-128;
1440
+ }
1441
+
1442
+ /* Collapsed state - slide mostly off screen but leave button visible */
1443
+ .dg-column--sidebar-right.collapsed {
1444
+ transform: translateX(calc(100% - 2rem));
1445
+ }
1446
+ }
1447
+
1448
+ /* Above 1280px: Normal sidebar behavior */
1449
+ @media (min-width: 1280px) {
1450
+ .dg-column--sidebar-right {
1451
+ @apply w-64 flex-shrink-0;
1452
+ }
1453
+
1454
+ .dg-column--sidebar-right.dg-column--sm {
1455
+ @apply w-80 flex-shrink-0;
1456
+ }
1457
+
1458
+ .dg-column--sidebar-right.dg-column--lg {
1459
+ @apply w-96 flex-shrink-0;
1460
+ }
1461
+
1462
+ .dg-column--sidebar-right.dg-column--xl {
1463
+ @apply w-128 flex-shrink-0;
1464
+ }
1465
+ }
1466
+
1467
+ /* ==========================================================================
1468
+ LINK COMPONENTS
1469
+ ========================================================================== */
1470
+
1471
+ /* Primary Link with hover effect */
1472
+ .dg-link {
1473
+ @apply dg-text-primary transition-opacity duration-200;
1474
+ }
1475
+
1476
+ .dg-link:hover {
1477
+ @apply opacity-80;
1478
+ }
1479
+
1480
+ /* Social Icon Link */
1481
+ .dg-social-link {
1482
+ @apply dg-text-fog transition-colors duration-200 text-xl;
1483
+ }
1484
+
1485
+ .dg-social-link:hover {
1486
+ @apply dg-text-primary;
1487
+ }
772
1488
  }