santycss 2.5.0 → 2.6.1

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.
@@ -1631,6 +1631,8 @@
1631
1631
  .set-max-width-narrow { max-width: 45ch; }
1632
1632
 
1633
1633
 
1634
+ /* @SANTYMOD:typography */
1635
+
1634
1636
  /* ── Variable Font Weights ── */
1635
1637
  .font-variable { font-variation-settings: normal; }
1636
1638
  .font-condensed { font-stretch: condensed; font-variation-settings: 'wdth' 75; }
@@ -1667,6 +1669,8 @@
1667
1669
  .set-width-5-of-6 { width: 83.3333%; }
1668
1670
 
1669
1671
 
1672
+ /* @SANTYMOD:colors */
1673
+
1670
1674
  /* ── Caret Colors (full shade scale) ── */
1671
1675
  .caret-red-50 { caret-color: #fef2f2; }
1672
1676
  .caret-red-100 { caret-color: #fee2e2; }
@@ -2268,6 +2272,8 @@
2268
2272
  .border-stone-shade-10 { border-color: color-mix(in srgb, #78716c 90%, #000000); }
2269
2273
  /* ═══ VARIANTS_BLOCK_END ═══ */
2270
2274
 
2275
+ /* @SANTYMOD:layout */
2276
+
2271
2277
  /* ═══════════════════════════════════════════════════════════════════════════
2272
2278
  v1.7 — ACCESSIBILITY UTILITIES
2273
2279
  ═══════════════════════════════════════════════════════════════════════════ */
@@ -3382,3 +3388,226 @@
3382
3388
  /* ── What I do card ── */
3383
3389
  .what-i-do-card { background: #1c1c1e; border: 1px solid #252525; border-radius: 12px; padding: 22px; transition: border-color 0.2s, transform 0.2s; }
3384
3390
  .what-i-do-card:hover { border-color: #0099e5; transform: translateY(-3px); }
3391
+
3392
+ /* ═══════════════════════════════════════════════════════════════════════
3393
+ "IT'S ME" PORTFOLIO TEMPLATE COMPONENTS (Added v2.5.0)
3394
+ Light, orange-accent, multi-section single-page portfolio
3395
+ ═══════════════════════════════════════════════════════════════════════ */
3396
+
3397
+ /* ── Sticky nav ── */
3398
+ .itsme-nav {
3399
+ position: sticky; top: 0; z-index: 200; background: #fff;
3400
+ border-bottom: 1px solid #efefef; box-shadow: 0 2px 16px rgba(0,0,0,.06);
3401
+ display: flex; align-items: center; justify-content: space-between;
3402
+ padding: 0 40px; height: 68px;
3403
+ }
3404
+ .itsme-brand { font-size: 22px; font-weight: 800; color: #222; letter-spacing: -0.02em; }
3405
+ .itsme-brand span { color: #f97316; }
3406
+ .itsme-nav-links { display: flex; align-items: center; gap: 32px; list-style: none; margin: 0; padding: 0; }
3407
+ .itsme-nav-link {
3408
+ font-size: 12px; font-weight: 700; color: #555; text-decoration: none;
3409
+ letter-spacing: 0.06em; text-transform: uppercase; transition: color .2s; cursor: pointer; background: none; border: none; font-family: inherit; padding: 0;
3410
+ }
3411
+ .itsme-nav-link:hover, .itsme-nav-link.itsme-nav-active { color: #f97316; }
3412
+ .itsme-nav-getcv {
3413
+ font-size: 11px; font-weight: 800; color: #fff; background: #f97316;
3414
+ border: none; border-radius: 5px; padding: 9px 22px; cursor: pointer;
3415
+ text-decoration: none; letter-spacing: 0.06em; text-transform: uppercase;
3416
+ transition: background .2s, transform .15s; font-family: inherit;
3417
+ }
3418
+ .itsme-nav-getcv:hover { background: #ea6c10; transform: translateY(-1px); }
3419
+ .itsme-hamburger { display: none; background: none; border: 1px solid #e8e8e8; border-radius: 6px; padding: 7px 9px; cursor: pointer; color: #444; line-height: 1; }
3420
+ @media (max-width: 768px) {
3421
+ .itsme-nav { padding: 0 20px; }
3422
+ .itsme-hamburger { display: flex; align-items: center; }
3423
+ .itsme-nav-links { display: none; position: absolute; top: 68px; left: 0; right: 0; background: #fff; flex-direction: column; align-items: stretch; padding: 8px 0; border-bottom: 1px solid #efefef; gap: 0; box-shadow: 0 8px 24px rgba(0,0,0,.08); z-index: 199; }
3424
+ .itsme-nav-links.open { display: flex; }
3425
+ .itsme-nav-link { padding: 13px 24px; border-bottom: 1px solid #f5f5f5; }
3426
+ .itsme-nav-getcv { display: none; }
3427
+ }
3428
+
3429
+ /* ── Hero ── */
3430
+ .itsme-hero {
3431
+ min-height: 100vh; display: flex; flex-direction: column;
3432
+ align-items: center; justify-content: center; text-align: center;
3433
+ background: #fff; padding: 80px 24px; overflow: hidden;
3434
+ }
3435
+ .itsme-profile-ring {
3436
+ width: 180px; height: 180px; border-radius: 50%; border: 4px solid #f97316;
3437
+ padding: 5px; display: inline-flex; align-items: center; justify-content: center;
3438
+ margin-bottom: 32px; flex-shrink: 0;
3439
+ }
3440
+ .itsme-profile-img {
3441
+ width: 100%; height: 100%; border-radius: 50%; object-fit: cover;
3442
+ background: linear-gradient(135deg, #fde68a 0%, #f97316 100%);
3443
+ display: flex; align-items: center; justify-content: center;
3444
+ font-size: 52px; font-weight: 900; color: #fff; overflow: hidden;
3445
+ }
3446
+ .itsme-hero-name { font-size: 52px; font-weight: 900; color: #1a1a2e; line-height: 1.1; margin: 0 0 14px; }
3447
+ .itsme-hero-tagline { font-size: 16px; color: #777; max-width: 480px; line-height: 1.7; margin: 0 0 32px; }
3448
+ .itsme-social-row { display: flex; gap: 10px; justify-content: center; margin-top: 32px; }
3449
+ .itsme-social-btn {
3450
+ width: 40px; height: 40px; border-radius: 50%; border: 1.5px solid #e8e8e8;
3451
+ display: flex; align-items: center; justify-content: center; color: #888;
3452
+ text-decoration: none; transition: all .2s; background: #fff;
3453
+ }
3454
+ .itsme-social-btn:hover { border-color: #f97316; color: #f97316; background: rgba(249,115,22,.06); }
3455
+ @media (max-width: 640px) {
3456
+ .itsme-hero-name { font-size: 34px; }
3457
+ .itsme-profile-ring { width: 140px; height: 140px; }
3458
+ .itsme-profile-img { font-size: 40px; }
3459
+ }
3460
+
3461
+ /* ── Section scaffold ── */
3462
+ .itsme-section { padding: 80px 40px; }
3463
+ .itsme-section-alt { background: #f8f9fa; }
3464
+ .itsme-section-inner { max-width: 1100px; margin: 0 auto; }
3465
+ .itsme-eyebrow { font-size: 12px; font-weight: 800; color: #f97316; letter-spacing: 0.14em; text-transform: uppercase; margin-bottom: 6px; }
3466
+ .itsme-title { font-size: 34px; font-weight: 900; color: #1a1a2e; margin: 0 0 10px; line-height: 1.15; }
3467
+ .itsme-divider { width: 48px; height: 3px; background: #f97316; border-radius: 2px; margin-bottom: 40px; }
3468
+ @media (max-width: 768px) {
3469
+ .itsme-section { padding: 56px 20px; }
3470
+ .itsme-title { font-size: 26px; }
3471
+ }
3472
+
3473
+ /* ── Bio info grid ── */
3474
+ .itsme-info-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px 40px; margin-bottom: 28px; }
3475
+ .itsme-info-label { font-size: 11px; font-weight: 700; color: #aaa; text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 2px; }
3476
+ .itsme-info-value { font-size: 14px; font-weight: 600; color: #333; }
3477
+ @media (max-width: 480px) { .itsme-info-grid { grid-template-columns: 1fr; } }
3478
+
3479
+ /* ── Service card ── */
3480
+ .itsme-service-card {
3481
+ background: #fff; border: 1px solid #efefef; border-radius: 14px;
3482
+ padding: 28px 22px; transition: box-shadow .25s, transform .25s;
3483
+ }
3484
+ .itsme-service-card:hover { box-shadow: 0 10px 36px rgba(249,115,22,.12); transform: translateY(-5px); }
3485
+ .itsme-service-icon {
3486
+ width: 52px; height: 52px; border-radius: 12px;
3487
+ background: rgba(249,115,22,.08); border: 1px solid rgba(249,115,22,.18);
3488
+ display: flex; align-items: center; justify-content: center; margin-bottom: 16px;
3489
+ }
3490
+
3491
+ /* ── Light skill bars ── */
3492
+ .itsme-skill-row { margin-bottom: 18px; }
3493
+ .itsme-skill-meta { display: flex; justify-content: space-between; margin-bottom: 6px; font-size: 13px; font-weight: 600; color: #444; }
3494
+ .itsme-skill-pct { color: #f97316; }
3495
+ .itsme-skill-track { height: 6px; background: #f0f0f0; border-radius: 3px; overflow: hidden; }
3496
+ .itsme-skill-fill { height: 100%; border-radius: 3px; background: #f97316; width: 0; transition: width 1.2s cubic-bezier(.4,0,.2,1); }
3497
+ .itsme-skill-fill-blue { background: #3b82f6; }
3498
+ .itsme-skill-fill-purple { background: #8b5cf6; }
3499
+ .itsme-skill-fill-green { background: #22c55e; }
3500
+
3501
+ /* ── Light timeline ── */
3502
+ .itsme-timeline { position: relative; padding-left: 30px; }
3503
+ .itsme-timeline::before { content: ''; position: absolute; left: 5px; top: 8px; width: 2px; height: calc(100% - 16px); background: #efefef; }
3504
+ .itsme-timeline-item { position: relative; margin-bottom: 32px; }
3505
+ .itsme-timeline-dot {
3506
+ position: absolute; left: -30px; top: 5px; width: 12px; height: 12px;
3507
+ border-radius: 50%; background: #f97316; border: 2px solid #fff; box-shadow: 0 0 0 2px #f97316;
3508
+ }
3509
+ .itsme-timeline-badge {
3510
+ display: inline-block; font-size: 10px; font-weight: 800; color: #f97316;
3511
+ background: rgba(249,115,22,.08); border-radius: 4px; padding: 2px 10px;
3512
+ letter-spacing: 0.06em; text-transform: uppercase; margin-bottom: 8px;
3513
+ }
3514
+ .itsme-timeline-role { font-size: 15px; font-weight: 700; color: #1a1a2e; margin-bottom: 3px; }
3515
+ .itsme-timeline-org { font-size: 12px; color: #f97316; font-weight: 700; margin-bottom: 8px; }
3516
+ .itsme-timeline-desc { font-size: 13px; color: #777; line-height: 1.7; margin: 0; }
3517
+
3518
+ /* ── Testimonial card ── */
3519
+ .itsme-testimonial {
3520
+ background: #fff; border: 1px solid #efefef; border-radius: 14px;
3521
+ padding: 28px 24px; transition: box-shadow .2s;
3522
+ }
3523
+ .itsme-testimonial:hover { box-shadow: 0 8px 28px rgba(0,0,0,.08); }
3524
+ .itsme-testimonial-quote { font-size: 36px; color: #f97316; line-height: 1; margin-bottom: 12px; font-weight: 900; }
3525
+
3526
+ /* ── Work/portfolio card ── */
3527
+ .itsme-work-card {
3528
+ border-radius: 14px; overflow: hidden; background: #fff;
3529
+ border: 1px solid #efefef; transition: box-shadow .25s, transform .25s; position: relative;
3530
+ }
3531
+ .itsme-work-card:hover { box-shadow: 0 12px 40px rgba(0,0,0,.12); transform: translateY(-5px); }
3532
+ .itsme-work-thumb { aspect-ratio: 4/3; overflow: hidden; position: relative; }
3533
+ .itsme-work-thumb-bg { width: 100%; height: 100%; transition: transform .3s; display: flex; align-items: center; justify-content: center; }
3534
+ .itsme-work-card:hover .itsme-work-thumb-bg { transform: scale(1.06); }
3535
+ .itsme-work-overlay {
3536
+ position: absolute; inset: 0; background: rgba(249,115,22,.88);
3537
+ display: flex; align-items: center; justify-content: center; flex-direction: column; gap: 8px;
3538
+ opacity: 0; transition: opacity .25s;
3539
+ }
3540
+ .itsme-work-card:hover .itsme-work-overlay { opacity: 1; }
3541
+ .itsme-work-cat {
3542
+ display: inline-block; font-size: 10px; font-weight: 800; letter-spacing: 0.06em;
3543
+ text-transform: uppercase; color: #f97316; background: rgba(249,115,22,.08);
3544
+ border-radius: 4px; padding: 2px 10px; margin-bottom: 6px;
3545
+ }
3546
+
3547
+ /* ── Portfolio filter buttons ── */
3548
+ .itsme-filter { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 32px; }
3549
+ .itsme-filter-btn {
3550
+ padding: 7px 20px; border-radius: 4px; border: 1.5px solid #e2e8f0;
3551
+ background: transparent; cursor: pointer; font-size: 11px; font-weight: 800;
3552
+ color: #777; font-family: inherit; transition: all .18s;
3553
+ text-transform: uppercase; letter-spacing: 0.06em;
3554
+ }
3555
+ .itsme-filter-btn:hover, .itsme-filter-btn.itsme-filter-active { background: #f97316; color: #fff; border-color: #f97316; }
3556
+
3557
+ /* ── Blog card ── */
3558
+ .itsme-blog-card {
3559
+ background: #fff; border: 1px solid #efefef; border-radius: 14px;
3560
+ overflow: hidden; transition: box-shadow .25s, transform .25s;
3561
+ }
3562
+ .itsme-blog-card:hover { box-shadow: 0 10px 32px rgba(0,0,0,.1); transform: translateY(-4px); }
3563
+ .itsme-blog-thumb { aspect-ratio: 16/9; overflow: hidden; }
3564
+ .itsme-blog-thumb-inner { width: 100%; height: 100%; transition: transform .3s; display: flex; align-items: center; justify-content: center; }
3565
+ .itsme-blog-card:hover .itsme-blog-thumb-inner { transform: scale(1.05); }
3566
+ .itsme-blog-tag {
3567
+ display: inline-block; font-size: 10px; font-weight: 800; padding: 3px 10px;
3568
+ border-radius: 4px; text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 10px;
3569
+ }
3570
+ .itsme-tag-web { background: rgba(59,130,246,.08); color: #3b82f6; }
3571
+ .itsme-tag-graphic { background: rgba(249,115,22,.08); color: #f97316; }
3572
+ .itsme-tag-motion { background: rgba(139,92,246,.08); color: #8b5cf6; }
3573
+
3574
+ /* ── Contact form ── */
3575
+ .itsme-input {
3576
+ width: 100%; padding: 12px 16px; border: 1.5px solid #e8e8e8;
3577
+ border-radius: 8px; font-size: 14px; color: #333; background: #fff;
3578
+ outline: none; transition: border-color .2s; font-family: inherit;
3579
+ display: block;
3580
+ }
3581
+ .itsme-input:focus { border-color: #f97316; }
3582
+ .itsme-textarea { resize: vertical; min-height: 130px; }
3583
+
3584
+ /* ── Primary button ── */
3585
+ .itsme-btn {
3586
+ display: inline-flex; align-items: center; gap: 8px; padding: 13px 30px;
3587
+ background: #f97316; color: #fff; border: 2px solid #f97316;
3588
+ border-radius: 6px; font-size: 12px; font-weight: 800; letter-spacing: 0.06em;
3589
+ text-transform: uppercase; cursor: pointer; text-decoration: none;
3590
+ transition: background .2s, transform .15s; font-family: inherit;
3591
+ }
3592
+ .itsme-btn:hover { background: #ea6c10; border-color: #ea6c10; transform: translateY(-1px); }
3593
+ .itsme-btn-ghost { background: transparent; color: #f97316; }
3594
+ .itsme-btn-ghost:hover { background: #f97316; color: #fff; }
3595
+
3596
+ /* ── Floating dots background deco ── */
3597
+ .itsme-dot-deco {
3598
+ position: absolute; border-radius: 50%; pointer-events: none;
3599
+ background: #f97316; opacity: .04;
3600
+ }
3601
+
3602
+ /* ── Contact info card ── */
3603
+ .itsme-contact-card {
3604
+ display: flex; align-items: flex-start; gap: 16px; padding: 20px;
3605
+ background: #fff; border: 1px solid #efefef; border-radius: 12px; margin-bottom: 16px;
3606
+ transition: box-shadow .2s;
3607
+ }
3608
+ .itsme-contact-card:hover { box-shadow: 0 6px 24px rgba(249,115,22,.1); }
3609
+ .itsme-contact-icon {
3610
+ width: 44px; height: 44px; border-radius: 10px; flex-shrink: 0;
3611
+ background: rgba(249,115,22,.08); border: 1px solid rgba(249,115,22,.18);
3612
+ display: flex; align-items: center; justify-content: center;
3613
+ }
@@ -1,3 +1,4 @@
1
+ /* @SANTYMOD:reset */
1
2
  /* ============================================================
2
3
  SantyCSS v2.3.0 — Plain-English Utility CSS Framework
3
4
  https://github.com/santybad/santy_css
@@ -37,6 +38,8 @@
37
38
  --santy-shadow-inner: inset 0 2px 4px 0 rgba(0,0,0,0.06);
38
39
  }
39
40
 
41
+
42
+ /* @SANTYMOD:layout */
40
43
  /* ── Display ── */
41
44
  .make-block { display: block; }
42
45
  .make-inline { display: inline; }
@@ -54,6 +57,8 @@
54
57
  .make-invisible { visibility: hidden; }
55
58
  .make-collapse { visibility: collapse; }
56
59
 
60
+
61
+ /* @SANTYMOD:flex */
57
62
  /* ── Flex Direction ── */
58
63
  .flex-row { flex-direction: row; }
59
64
  .flex-row-reverse { flex-direction: row-reverse; }
@@ -142,6 +147,8 @@
142
147
  .order-11 { order: 11; }
143
148
  .order-12 { order: 12; }
144
149
 
150
+ /* @SANTYMOD:grid */
151
+
145
152
  /* ── Grid Template Columns ── */
146
153
  .grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
147
154
  .grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@@ -196,6 +203,8 @@
196
203
  .grid-auto-cols-fr { grid-auto-columns: minmax(0, 1fr); }
197
204
 
198
205
 
206
+ /* @SANTYMOD:spacing */
207
+
199
208
  /* ── Padding ── */
200
209
  .add-padding-0 { padding: 0px; }
201
210
  .add-padding-top-0 { padding-top: 0px; }
@@ -833,6 +842,8 @@
833
842
  .gap-x-1024 { column-gap: 1024px; }
834
843
  .gap-y-1024 { row-gap: 1024px; }
835
844
 
845
+ /* @SANTYMOD:sizing */
846
+
836
847
  /* ── Width ── */
837
848
  .set-width-0 { width: 0px; }
838
849
  .set-width-1 { width: 1px; }
@@ -1073,6 +1084,8 @@
1073
1084
  .min-width-none { min-width: none; }
1074
1085
  .max-width-none { max-width: none; }
1075
1086
 
1087
+ /* @SANTYMOD:borders */
1088
+
1076
1089
  /* ── Border Width ── */
1077
1090
  .add-border-0 { border: 0px solid; }
1078
1091
  .add-border-top-0 { border-top: 0px solid; }
@@ -1313,6 +1326,8 @@
1313
1326
  .round-left-128 { border-top-left-radius: 128px; border-bottom-left-radius: 128px; }
1314
1327
  .round-right-128 { border-top-right-radius: 128px; border-bottom-right-radius: 128px; }
1315
1328
 
1329
+ /* @SANTYMOD:typography */
1330
+
1316
1331
  /* ── Font Size ── */
1317
1332
  .set-text-8 { font-size: 8px; }
1318
1333
  .set-text-9 { font-size: 9px; }
@@ -1436,6 +1451,8 @@
1436
1451
  .letter-space-wider { letter-spacing: 0.05em; }
1437
1452
  .letter-space-widest { letter-spacing: 0.1em; }
1438
1453
 
1454
+ /* @SANTYMOD:colors */
1455
+
1439
1456
  /* ── Text Colors ── */
1440
1457
  .color-red-50 { color: #fef2f2; }
1441
1458
  .color-red-100 { color: #fee2e2; }
@@ -2402,6 +2419,8 @@
2402
2419
  .gradient-to-bottom-right { background-image: linear-gradient(to bottom right, var(--grad-from, transparent), var(--grad-to, transparent)); }
2403
2420
 
2404
2421
 
2422
+ /* @SANTYMOD:layout */
2423
+
2405
2424
  /* ── Position ── */
2406
2425
  .position-static { position: static; }
2407
2426
  .position-relative { position: relative; }
@@ -2598,6 +2617,8 @@
2598
2617
  .overflow-y-visible { overflow-y: visible; }
2599
2618
 
2600
2619
 
2620
+ /* @SANTYMOD:effects */
2621
+
2601
2622
  /* ── Opacity ── */
2602
2623
  .opacity-0 { opacity: 0; }
2603
2624
  .opacity-5 { opacity: 0.05; }
@@ -2730,6 +2751,8 @@
2730
2751
  .cursor-none { cursor: none; }
2731
2752
 
2732
2753
 
2754
+ /* @SANTYMOD:layout */
2755
+
2733
2756
  /* ── Object Fit ── */
2734
2757
  .fit-cover { object-fit: cover; }
2735
2758
  .fit-contain { object-fit: contain; }
@@ -2774,6 +2797,8 @@
2774
2797
  .aspect-video { aspect-ratio: 16 / 9; }
2775
2798
 
2776
2799
 
2800
+ /* @SANTYMOD:effects */
2801
+
2777
2802
  /* ── Filter ── */
2778
2803
  .blur-sm { filter: blur(4px); }
2779
2804
  .blur { filter: blur(8px); }
@@ -2924,6 +2949,8 @@
2924
2949
  .will-change-transform { will-change: transform; }
2925
2950
 
2926
2951
 
2952
+ /* @SANTYMOD:variants */
2953
+
2927
2954
  /* ═══════════════════════════════════════════════════════════════
2928
2955
  RESPONSIVE VARIANTS
2929
2956
  Usage: class="on-mobile:make-hidden md:make-flex lg:grid-cols-3"
@@ -4331,3 +4358,6 @@
4331
4358
  .make-container-named-section { container: section / inline-size; }
4332
4359
  .make-container-named-widget { container: widget / inline-size; }
4333
4360
 
4361
+
4362
+
4363
+ /* @SANTYMOD:animations */
@@ -0,0 +1,283 @@
1
+ /* SantyCSS — effects module
2
+ Import individually to reduce bundle size.
3
+ https://santycss.santy.in */
4
+
5
+ /* ── Opacity ── */
6
+ .opacity-0 { opacity: 0; }
7
+ .opacity-5 { opacity: 0.05; }
8
+ .opacity-10 { opacity: 0.1; }
9
+ .opacity-15 { opacity: 0.15; }
10
+ .opacity-20 { opacity: 0.2; }
11
+ .opacity-25 { opacity: 0.25; }
12
+ .opacity-30 { opacity: 0.3; }
13
+ .opacity-35 { opacity: 0.35; }
14
+ .opacity-40 { opacity: 0.4; }
15
+ .opacity-45 { opacity: 0.45; }
16
+ .opacity-50 { opacity: 0.5; }
17
+ .opacity-55 { opacity: 0.55; }
18
+ .opacity-60 { opacity: 0.6; }
19
+ .opacity-65 { opacity: 0.65; }
20
+ .opacity-70 { opacity: 0.7; }
21
+ .opacity-75 { opacity: 0.75; }
22
+ .opacity-80 { opacity: 0.8; }
23
+ .opacity-85 { opacity: 0.85; }
24
+ .opacity-90 { opacity: 0.9; }
25
+ .opacity-95 { opacity: 0.95; }
26
+ .opacity-100 { opacity: 1; }
27
+
28
+ /* ── Box Shadow ── */
29
+ .add-shadow-sm { box-shadow: var(--santy-shadow-sm); }
30
+ .add-shadow { box-shadow: var(--santy-shadow); }
31
+ .add-shadow-md { box-shadow: var(--santy-shadow-md); }
32
+ .add-shadow-lg { box-shadow: var(--santy-shadow-lg); }
33
+ .add-shadow-xl { box-shadow: var(--santy-shadow-xl); }
34
+ .add-shadow-inner { box-shadow: var(--santy-shadow-inner); }
35
+ .add-shadow-none { box-shadow: none; }
36
+ .no-shadow { box-shadow: none; }
37
+
38
+ /* ── Drop Shadow (filter) ── */
39
+ .drop-shadow-sm { filter: drop-shadow(0 1px 1px rgba(0,0,0,0.05)); }
40
+ .drop-shadow { filter: drop-shadow(0 1px 2px rgba(0,0,0,0.1)); }
41
+ .drop-shadow-md { filter: drop-shadow(0 4px 3px rgba(0,0,0,0.07)); }
42
+ .drop-shadow-lg { filter: drop-shadow(0 10px 8px rgba(0,0,0,0.04)); }
43
+ .drop-shadow-xl { filter: drop-shadow(0 20px 13px rgba(0,0,0,0.03)); }
44
+ .drop-shadow-none { filter: drop-shadow(0 0 #0000); }
45
+
46
+ /* ── Text Shadow ── */
47
+ .text-shadow-sm { text-shadow: 0 1px 2px rgba(0,0,0,0.2); }
48
+ .text-shadow { text-shadow: 0 2px 4px rgba(0,0,0,0.3); }
49
+ .text-shadow-lg { text-shadow: 0 4px 8px rgba(0,0,0,0.4); }
50
+ .text-shadow-none{ text-shadow: none; }
51
+
52
+
53
+ /* ── Transition ── */
54
+ .transition-fast { transition: var(--santy-transition-fast); }
55
+ .transition-normal { transition: var(--santy-transition-normal); }
56
+ .transition-slow { transition: var(--santy-transition-slow); }
57
+ .transition-none { transition: none; }
58
+ .transition-colors { transition: color 0.3s ease, background-color 0.3s ease, border-color 0.3s ease; }
59
+ .transition-opacity{ transition: opacity 0.3s ease; }
60
+ .transition-transform{ transition: transform 0.3s ease; }
61
+
62
+ /* ── Transform ── */
63
+ .flip-horizontal { transform: scaleX(-1); }
64
+ .flip-vertical { transform: scaleY(-1); }
65
+ .rotate-45 { transform: rotate(45deg); }
66
+ .rotate-90 { transform: rotate(90deg); }
67
+ .rotate-135 { transform: rotate(135deg); }
68
+ .rotate-180 { transform: rotate(180deg); }
69
+ .rotate-270 { transform: rotate(270deg); }
70
+ .rotate-minus-45 { transform: rotate(-45deg); }
71
+ .rotate-minus-90 { transform: rotate(-90deg); }
72
+ .scale-75 { transform: scale(0.75); }
73
+ .scale-90 { transform: scale(0.90); }
74
+ .scale-95 { transform: scale(0.95); }
75
+ .scale-100 { transform: scale(1); }
76
+ .scale-105 { transform: scale(1.05); }
77
+ .scale-110 { transform: scale(1.10); }
78
+ .scale-125 { transform: scale(1.25); }
79
+ .scale-150 { transform: scale(1.50); }
80
+ .skew-x-3 { transform: skewX(3deg); }
81
+ .skew-x-6 { transform: skewX(6deg); }
82
+ .skew-x-12 { transform: skewX(12deg); }
83
+ .skew-y-3 { transform: skewY(3deg); }
84
+ .skew-y-6 { transform: skewY(6deg); }
85
+ .skew-y-12 { transform: skewY(12deg); }
86
+ .transform-origin-center { transform-origin: center; }
87
+ .transform-origin-top { transform-origin: top; }
88
+ .transform-origin-top-right { transform-origin: top right; }
89
+ .transform-origin-right { transform-origin: right; }
90
+ .transform-origin-bottom-right{ transform-origin: bottom right; }
91
+ .transform-origin-bottom { transform-origin: bottom; }
92
+ .transform-origin-bottom-left { transform-origin: bottom left; }
93
+ .transform-origin-left { transform-origin: left; }
94
+ .transform-origin-top-left { transform-origin: top left; }
95
+
96
+ /* ── Animation ── */
97
+ .animate-spin { animation: santy-spin 1s linear infinite; }
98
+ .animate-ping { animation: santy-ping 1s cubic-bezier(0,0,0.2,1) infinite; }
99
+ .animate-pulse { animation: santy-pulse 2s cubic-bezier(0.4,0,0.6,1) infinite; }
100
+ .animate-bounce { animation: santy-bounce 1s infinite; }
101
+ .animate-fade-in { animation: santy-fade-in 0.5s ease; }
102
+ .animate-fade-out { animation: santy-fade-out 0.5s ease; }
103
+ .animate-slide-up { animation: santy-slide-up 0.4s ease; }
104
+ .animate-slide-down { animation: santy-slide-down 0.4s ease; }
105
+ .animate-zoom-in { animation: santy-zoom-in 0.3s ease; }
106
+ .animation-paused { animation-play-state: paused; }
107
+ .animation-none { animation: none; }
108
+
109
+ @keyframes santy-spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
110
+ @keyframes santy-ping { 75%, 100% { transform: scale(2); opacity: 0; } }
111
+ @keyframes santy-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
112
+ @keyframes santy-bounce { 0%, 100% { transform: translateY(-25%); animation-timing-function: cubic-bezier(0.8,0,1,1); } 50% { transform: translateY(0); animation-timing-function: cubic-bezier(0,0,0.2,1); } }
113
+ @keyframes santy-fade-in { from { opacity: 0; } to { opacity: 1; } }
114
+ @keyframes santy-fade-out { from { opacity: 1; } to { opacity: 0; } }
115
+ @keyframes santy-slide-up { from { transform: translateY(20px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
116
+ @keyframes santy-slide-down { from { transform: translateY(-20px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
117
+ @keyframes santy-zoom-in { from { transform: scale(0.9); opacity: 0; } to { transform: scale(1); opacity: 1; } }
118
+
119
+
120
+ /* ── Cursor ── */
121
+ .cursor-auto { cursor: auto; }
122
+ .cursor-default { cursor: default; }
123
+ .cursor-pointer { cursor: pointer; }
124
+ .cursor-wait { cursor: wait; }
125
+ .cursor-text { cursor: text; }
126
+ .cursor-move { cursor: move; }
127
+ .cursor-not-allowed { cursor: not-allowed; }
128
+ .cursor-crosshair { cursor: crosshair; }
129
+ .cursor-grab { cursor: grab; }
130
+ .cursor-grabbing { cursor: grabbing; }
131
+ .cursor-zoom-in { cursor: zoom-in; }
132
+ .cursor-zoom-out { cursor: zoom-out; }
133
+ .cursor-help { cursor: help; }
134
+ .cursor-none { cursor: none; }
135
+
136
+ /* ── Filter ── */
137
+ .blur-sm { filter: blur(4px); }
138
+ .blur { filter: blur(8px); }
139
+ .blur-md { filter: blur(12px); }
140
+ .blur-lg { filter: blur(16px); }
141
+ .blur-xl { filter: blur(24px); }
142
+ .blur-none{ filter: blur(0); }
143
+ .brightness-50 { filter: brightness(0.5); }
144
+ .brightness-75 { filter: brightness(0.75); }
145
+ .brightness-90 { filter: brightness(0.9); }
146
+ .brightness-100 { filter: brightness(1); }
147
+ .brightness-110 { filter: brightness(1.1); }
148
+ .brightness-125 { filter: brightness(1.25); }
149
+ .brightness-150 { filter: brightness(1.5); }
150
+ .brightness-200 { filter: brightness(2); }
151
+ .contrast-50 { filter: contrast(0.5); }
152
+ .contrast-75 { filter: contrast(0.75); }
153
+ .contrast-100 { filter: contrast(1); }
154
+ .contrast-125 { filter: contrast(1.25); }
155
+ .contrast-150 { filter: contrast(1.5); }
156
+ .contrast-200 { filter: contrast(2); }
157
+ .grayscale { filter: grayscale(100%); }
158
+ .grayscale-0 { filter: grayscale(0); }
159
+ .sepia { filter: sepia(100%); }
160
+ .sepia-0 { filter: sepia(0); }
161
+ .invert { filter: invert(100%); }
162
+ .invert-0 { filter: invert(0); }
163
+ .saturate-0 { filter: saturate(0); }
164
+ .saturate-50 { filter: saturate(0.5); }
165
+ .saturate-100 { filter: saturate(1); }
166
+ .saturate-150 { filter: saturate(1.5); }
167
+ .saturate-200 { filter: saturate(2); }
168
+ .hue-rotate-30 { filter: hue-rotate(30deg); }
169
+ .hue-rotate-60 { filter: hue-rotate(60deg); }
170
+ .hue-rotate-90 { filter: hue-rotate(90deg); }
171
+ .hue-rotate-180 { filter: hue-rotate(180deg); }
172
+
173
+
174
+ /* ── Pointer Events ── */
175
+ .pointer-none { pointer-events: none; }
176
+ .pointer-auto { pointer-events: auto; }
177
+ .pointer-all { pointer-events: all; }
178
+ /* Standard pointer-events-* aliases */
179
+ .pointer-events-none { pointer-events: none; }
180
+ .pointer-events-auto { pointer-events: auto; }
181
+
182
+ /* ── User Select ── */
183
+ .select-none { user-select: none; }
184
+ .select-text { user-select: text; }
185
+ .select-all { user-select: all; }
186
+ .select-auto { user-select: auto; }
187
+
188
+ /* ── Resize ── */
189
+ .resize-none { resize: none; }
190
+ .resize { resize: both; }
191
+ .resize-x { resize: horizontal; }
192
+ .resize-y { resize: vertical; }
193
+
194
+ /* ── Appearance ── */
195
+ .appearance-none { appearance: none; -webkit-appearance: none; }
196
+ .appearance-auto { appearance: auto; }
197
+
198
+ /* ── Outline ── */
199
+ .outline-none { outline: none; }
200
+ .outline { outline: 2px solid currentColor; }
201
+ .outline-dashed { outline: 2px dashed currentColor; }
202
+ .outline-offset-2 { outline-offset: 2px; }
203
+ .outline-offset-4 { outline-offset: 4px; }
204
+
205
+ /* ── List Style ── */
206
+ .list-none { list-style-type: none; padding-left: 0; }
207
+ .list-disc { list-style-type: disc; }
208
+ .list-decimal{ list-style-type: decimal; }
209
+ .list-inside { list-style-position: inside; }
210
+ .list-outside{ list-style-position: outside; }
211
+
212
+ /* ── Table ── */
213
+ .table-auto { table-layout: auto; }
214
+ .table-fixed { table-layout: fixed; }
215
+ .border-collapse{ border-collapse: collapse; }
216
+ .border-separate{ border-collapse: separate; }
217
+
218
+ /* ── Columns ── */
219
+ .columns-auto { columns: auto; }
220
+
221
+ .columns-1 { columns: 1; }
222
+ .columns-2 { columns: 2; }
223
+ .columns-3 { columns: 3; }
224
+ .columns-4 { columns: 4; }
225
+ .columns-5 { columns: 5; }
226
+ .columns-6 { columns: 6; }
227
+
228
+ /* ── Screen Reader Only ── */
229
+ .sr-only {
230
+ position: absolute;
231
+ width: 1px;
232
+ height: 1px;
233
+ padding: 0;
234
+ margin: -1px;
235
+ overflow: hidden;
236
+ clip: rect(0,0,0,0);
237
+ white-space: nowrap;
238
+ border-width: 0;
239
+ }
240
+ .not-sr-only {
241
+ position: static;
242
+ width: auto;
243
+ height: auto;
244
+ padding: 0;
245
+ margin: 0;
246
+ overflow: visible;
247
+ clip: auto;
248
+ white-space: normal;
249
+ }
250
+
251
+ /* ── Break ── */
252
+ .break-before-auto { break-before: auto; }
253
+ .break-before-always { break-before: always; }
254
+ .break-before-avoid { break-before: avoid; }
255
+ .break-after-auto { break-after: auto; }
256
+ .break-after-always { break-after: always; }
257
+ .break-after-avoid { break-after: avoid; }
258
+ .break-inside-auto { break-inside: auto; }
259
+ .break-inside-avoid { break-inside: avoid; }
260
+
261
+ /* ── Isolation ── */
262
+ .isolate { isolation: isolate; }
263
+ .isolation-auto { isolation: auto; }
264
+
265
+ /* ── Mix Blend Mode ── */
266
+ .blend-normal { mix-blend-mode: normal; }
267
+ .blend-multiply { mix-blend-mode: multiply; }
268
+ .blend-screen { mix-blend-mode: screen; }
269
+ .blend-overlay { mix-blend-mode: overlay; }
270
+ .blend-darken { mix-blend-mode: darken; }
271
+ .blend-lighten { mix-blend-mode: lighten; }
272
+ .blend-difference { mix-blend-mode: difference; }
273
+ .blend-exclusion { mix-blend-mode: exclusion; }
274
+ .blend-hue { mix-blend-mode: hue; }
275
+ .blend-saturation { mix-blend-mode: saturation; }
276
+ .blend-color { mix-blend-mode: color; }
277
+ .blend-luminosity { mix-blend-mode: luminosity; }
278
+
279
+ /* ── Will Change ── */
280
+ .will-change-auto { will-change: auto; }
281
+ .will-change-scroll { will-change: scroll-position; }
282
+ .will-change-contents { will-change: contents; }
283
+ .will-change-transform { will-change: transform; }