@casoon/atlas-styles 0.0.6 → 0.0.8

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/dist/index.css CHANGED
@@ -2048,6 +2048,877 @@
2048
2048
  }
2049
2049
 
2050
2050
 
2051
+ /* ===== COMPONENTS ===== */
2052
+ /**
2053
+ * Atlas Components - Micro-Interactions CSS
2054
+ *
2055
+ * Premium animations and transitions for Atlas UI components.
2056
+ * These are the "tiny moments that make a product feel alive."
2057
+ */
2058
+
2059
+ /* ==========================================================================
2060
+ CSS Custom Properties
2061
+ ========================================================================== */
2062
+
2063
+ :root {
2064
+ /* Animation Durations */
2065
+ --atlas-duration-instant: 0ms;
2066
+ --atlas-duration-fast: 150ms;
2067
+ --atlas-duration-normal: 250ms;
2068
+ --atlas-duration-slow: 400ms;
2069
+
2070
+ /* Easing Functions */
2071
+ --atlas-ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
2072
+ --atlas-ease-decelerate: cubic-bezier(0, 0, 0.2, 1);
2073
+ --atlas-ease-accelerate: cubic-bezier(0.4, 0, 1, 1);
2074
+ --atlas-ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
2075
+ --atlas-ease-spring: cubic-bezier(0.175, 0.885, 0.32, 1.275);
2076
+
2077
+ /* Colors (can be overridden) */
2078
+ --atlas-primary: #3b82f6;
2079
+ --atlas-primary-rgb: 59, 130, 246;
2080
+ --atlas-success: #22c55e;
2081
+ --atlas-error: #ef4444;
2082
+ --atlas-gray-100: #f3f4f6;
2083
+ --atlas-gray-200: #e5e7eb;
2084
+ --atlas-gray-400: #9ca3af;
2085
+ }
2086
+
2087
+ /* ==========================================================================
2088
+ Keyframe Animations
2089
+ ========================================================================== */
2090
+
2091
+ /* Button Ripple Effect */
2092
+ @keyframes atlas-ripple {
2093
+ from {
2094
+ transform: scale(0);
2095
+ opacity: 0.4;
2096
+ }
2097
+ to {
2098
+ transform: scale(1);
2099
+ opacity: 0;
2100
+ }
2101
+ }
2102
+
2103
+ /* Button Spinner */
2104
+ @keyframes atlas-spin {
2105
+ from {
2106
+ transform: rotate(0deg);
2107
+ }
2108
+ to {
2109
+ transform: rotate(360deg);
2110
+ }
2111
+ }
2112
+
2113
+ /* Button Checkmark Draw Animation */
2114
+ @keyframes atlas-checkmark-draw {
2115
+ from {
2116
+ stroke-dashoffset: 24;
2117
+ }
2118
+ to {
2119
+ stroke-dashoffset: 0;
2120
+ }
2121
+ }
2122
+
2123
+ /* Button X Draw Animation (Error state) */
2124
+ @keyframes atlas-x-draw {
2125
+ from {
2126
+ stroke-dashoffset: 17;
2127
+ }
2128
+ to {
2129
+ stroke-dashoffset: 0;
2130
+ }
2131
+ }
2132
+
2133
+ /* Skeleton Shimmer */
2134
+ @keyframes atlas-skeleton-shimmer {
2135
+ 0% {
2136
+ transform: translateX(-100%);
2137
+ }
2138
+ 100% {
2139
+ transform: translateX(100%);
2140
+ }
2141
+ }
2142
+
2143
+ /* Skeleton Pulse */
2144
+ @keyframes atlas-skeleton-pulse {
2145
+ 0%,
2146
+ 100% {
2147
+ opacity: 0.3;
2148
+ }
2149
+ 50% {
2150
+ opacity: 0.6;
2151
+ }
2152
+ }
2153
+
2154
+ /* Skeleton Wave */
2155
+ @keyframes atlas-skeleton-wave {
2156
+ 0% {
2157
+ background-position: -200% 0;
2158
+ }
2159
+ 100% {
2160
+ background-position: 200% 0;
2161
+ }
2162
+ }
2163
+
2164
+ /* General Shimmer (for progress bars, etc.) */
2165
+ @keyframes atlas-shimmer {
2166
+ 0% {
2167
+ transform: translateX(-100%);
2168
+ }
2169
+ 100% {
2170
+ transform: translateX(100%);
2171
+ }
2172
+ }
2173
+
2174
+ /* Progress Indeterminate */
2175
+ @keyframes atlas-progress-indeterminate {
2176
+ 0% {
2177
+ left: -30%;
2178
+ right: 100%;
2179
+ }
2180
+ 50% {
2181
+ left: 100%;
2182
+ right: -30%;
2183
+ }
2184
+ 100% {
2185
+ left: 100%;
2186
+ right: -30%;
2187
+ }
2188
+ }
2189
+
2190
+ /* Toast Progress Bar */
2191
+ @keyframes atlas-toast-progress {
2192
+ from {
2193
+ transform: scaleX(1);
2194
+ }
2195
+ to {
2196
+ transform: scaleX(0);
2197
+ }
2198
+ }
2199
+
2200
+ /* Modal/Drawer Backdrop Fade */
2201
+ @keyframes atlas-backdrop-in {
2202
+ from {
2203
+ background-color: rgba(0, 0, 0, 0);
2204
+ backdrop-filter: blur(0px);
2205
+ }
2206
+ to {
2207
+ background-color: rgba(0, 0, 0, 0.5);
2208
+ backdrop-filter: blur(4px);
2209
+ }
2210
+ }
2211
+
2212
+ @keyframes atlas-backdrop-out {
2213
+ from {
2214
+ background-color: rgba(0, 0, 0, 0.5);
2215
+ backdrop-filter: blur(4px);
2216
+ }
2217
+ to {
2218
+ background-color: rgba(0, 0, 0, 0);
2219
+ backdrop-filter: blur(0px);
2220
+ }
2221
+ }
2222
+
2223
+ /* Modal Scale In/Out */
2224
+ @keyframes atlas-modal-in {
2225
+ from {
2226
+ opacity: 0;
2227
+ transform: scale(0.95);
2228
+ }
2229
+ to {
2230
+ opacity: 1;
2231
+ transform: scale(1);
2232
+ }
2233
+ }
2234
+
2235
+ @keyframes atlas-modal-out {
2236
+ from {
2237
+ opacity: 1;
2238
+ transform: scale(1);
2239
+ }
2240
+ to {
2241
+ opacity: 0;
2242
+ transform: scale(0.95);
2243
+ }
2244
+ }
2245
+
2246
+ /* Drawer Slide Variants */
2247
+ @keyframes atlas-drawer-left-in {
2248
+ from {
2249
+ transform: translateX(-100%);
2250
+ }
2251
+ to {
2252
+ transform: translateX(0);
2253
+ }
2254
+ }
2255
+
2256
+ @keyframes atlas-drawer-right-in {
2257
+ from {
2258
+ transform: translateX(100%);
2259
+ }
2260
+ to {
2261
+ transform: translateX(0);
2262
+ }
2263
+ }
2264
+
2265
+ @keyframes atlas-drawer-top-in {
2266
+ from {
2267
+ transform: translateY(-100%);
2268
+ }
2269
+ to {
2270
+ transform: translateY(0);
2271
+ }
2272
+ }
2273
+
2274
+ @keyframes atlas-drawer-bottom-in {
2275
+ from {
2276
+ transform: translateY(100%);
2277
+ }
2278
+ to {
2279
+ transform: translateY(0);
2280
+ }
2281
+ }
2282
+
2283
+ @keyframes atlas-drawer-left-out {
2284
+ from {
2285
+ transform: translateX(0);
2286
+ }
2287
+ to {
2288
+ transform: translateX(-100%);
2289
+ }
2290
+ }
2291
+
2292
+ @keyframes atlas-drawer-right-out {
2293
+ from {
2294
+ transform: translateX(0);
2295
+ }
2296
+ to {
2297
+ transform: translateX(100%);
2298
+ }
2299
+ }
2300
+
2301
+ @keyframes atlas-drawer-top-out {
2302
+ from {
2303
+ transform: translateY(0);
2304
+ }
2305
+ to {
2306
+ transform: translateY(-100%);
2307
+ }
2308
+ }
2309
+
2310
+ @keyframes atlas-drawer-bottom-out {
2311
+ from {
2312
+ transform: translateY(0);
2313
+ }
2314
+ to {
2315
+ transform: translateY(100%);
2316
+ }
2317
+ }
2318
+
2319
+ /* Dropdown Scale In/Out */
2320
+ @keyframes atlas-dropdown-in {
2321
+ from {
2322
+ opacity: 0;
2323
+ transform: scale(0.95);
2324
+ }
2325
+ to {
2326
+ opacity: 1;
2327
+ transform: scale(1);
2328
+ }
2329
+ }
2330
+
2331
+ @keyframes atlas-dropdown-out {
2332
+ from {
2333
+ opacity: 1;
2334
+ transform: scale(1);
2335
+ }
2336
+ to {
2337
+ opacity: 0;
2338
+ transform: scale(0.95);
2339
+ }
2340
+ }
2341
+
2342
+ /* Toast Slide In/Out */
2343
+ @keyframes atlas-toast-in-bottom {
2344
+ from {
2345
+ opacity: 0;
2346
+ transform: translateY(100%);
2347
+ }
2348
+ to {
2349
+ opacity: 1;
2350
+ transform: translateY(0);
2351
+ }
2352
+ }
2353
+
2354
+ @keyframes atlas-toast-in-top {
2355
+ from {
2356
+ opacity: 0;
2357
+ transform: translateY(-100%);
2358
+ }
2359
+ to {
2360
+ opacity: 1;
2361
+ transform: translateY(0);
2362
+ }
2363
+ }
2364
+
2365
+ @keyframes atlas-toast-out {
2366
+ from {
2367
+ opacity: 1;
2368
+ transform: translateX(0);
2369
+ }
2370
+ to {
2371
+ opacity: 0;
2372
+ transform: translateX(100%);
2373
+ }
2374
+ }
2375
+
2376
+ /* Gentle Pulse (for focus indicators, breathing effect) */
2377
+ @keyframes atlas-pulse {
2378
+ 0%,
2379
+ 100% {
2380
+ box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.4);
2381
+ }
2382
+ 50% {
2383
+ box-shadow: 0 0 0 4px rgba(59, 130, 246, 0);
2384
+ }
2385
+ }
2386
+
2387
+ /* Breathing animation (subtle scale pulse) */
2388
+ @keyframes atlas-breathing {
2389
+ 0%,
2390
+ 100% {
2391
+ transform: scale(1);
2392
+ filter: brightness(1);
2393
+ }
2394
+ 50% {
2395
+ transform: scale(1.02);
2396
+ filter: brightness(1.05);
2397
+ }
2398
+ }
2399
+
2400
+ /* Shake (for error states) */
2401
+ @keyframes atlas-shake {
2402
+ 0%,
2403
+ 100% {
2404
+ transform: translateX(0);
2405
+ }
2406
+ 10%,
2407
+ 30%,
2408
+ 50%,
2409
+ 70%,
2410
+ 90% {
2411
+ transform: translateX(-4px);
2412
+ }
2413
+ 20%,
2414
+ 40%,
2415
+ 60%,
2416
+ 80% {
2417
+ transform: translateX(4px);
2418
+ }
2419
+ }
2420
+
2421
+ /* Bounce (for success states) */
2422
+ @keyframes atlas-bounce {
2423
+ 0%,
2424
+ 100% {
2425
+ transform: scale(1);
2426
+ }
2427
+ 50% {
2428
+ transform: scale(1.05);
2429
+ }
2430
+ }
2431
+
2432
+ /* Fade In/Out */
2433
+ @keyframes atlas-fade-in {
2434
+ from {
2435
+ opacity: 0;
2436
+ }
2437
+ to {
2438
+ opacity: 1;
2439
+ }
2440
+ }
2441
+
2442
+ @keyframes atlas-fade-out {
2443
+ from {
2444
+ opacity: 1;
2445
+ }
2446
+ to {
2447
+ opacity: 0;
2448
+ }
2449
+ }
2450
+
2451
+ /* Slide animations for stagger */
2452
+ @keyframes atlas-slide-up {
2453
+ from {
2454
+ opacity: 0;
2455
+ transform: translateY(20px);
2456
+ }
2457
+ to {
2458
+ opacity: 1;
2459
+ transform: translateY(0);
2460
+ }
2461
+ }
2462
+
2463
+ @keyframes atlas-slide-down {
2464
+ from {
2465
+ opacity: 0;
2466
+ transform: translateY(-20px);
2467
+ }
2468
+ to {
2469
+ opacity: 1;
2470
+ transform: translateY(0);
2471
+ }
2472
+ }
2473
+
2474
+ @keyframes atlas-slide-left {
2475
+ from {
2476
+ opacity: 0;
2477
+ transform: translateX(20px);
2478
+ }
2479
+ to {
2480
+ opacity: 1;
2481
+ transform: translateX(0);
2482
+ }
2483
+ }
2484
+
2485
+ @keyframes atlas-slide-right {
2486
+ from {
2487
+ opacity: 0;
2488
+ transform: translateX(-20px);
2489
+ }
2490
+ to {
2491
+ opacity: 1;
2492
+ transform: translateX(0);
2493
+ }
2494
+ }
2495
+
2496
+ /* Scale animations for stagger */
2497
+ @keyframes atlas-scale-in {
2498
+ from {
2499
+ opacity: 0;
2500
+ transform: scale(0.8);
2501
+ }
2502
+ to {
2503
+ opacity: 1;
2504
+ transform: scale(1);
2505
+ }
2506
+ }
2507
+
2508
+ @keyframes atlas-scale-up {
2509
+ from {
2510
+ opacity: 0;
2511
+ transform: scale(0.8) translateY(20px);
2512
+ }
2513
+ to {
2514
+ opacity: 1;
2515
+ transform: scale(1) translateY(0);
2516
+ }
2517
+ }
2518
+
2519
+ /* Flip animation */
2520
+ @keyframes atlas-flip-in {
2521
+ from {
2522
+ opacity: 0;
2523
+ transform: perspective(400px) rotateX(-90deg);
2524
+ }
2525
+ to {
2526
+ opacity: 1;
2527
+ transform: perspective(400px) rotateX(0);
2528
+ }
2529
+ }
2530
+
2531
+ /* Zoom animation */
2532
+ @keyframes atlas-zoom-in {
2533
+ from {
2534
+ opacity: 0;
2535
+ transform: scale(0);
2536
+ }
2537
+ to {
2538
+ opacity: 1;
2539
+ transform: scale(1);
2540
+ }
2541
+ }
2542
+
2543
+ /* ==========================================================================
2544
+ Component Base Styles
2545
+ ========================================================================== */
2546
+
2547
+ /* Button States */
2548
+ .atlas-button {
2549
+ position: relative;
2550
+ overflow: hidden;
2551
+ transition: transform var(--atlas-duration-fast) var(--atlas-ease-bounce),
2552
+ filter var(--atlas-duration-fast) var(--atlas-ease-standard),
2553
+ box-shadow var(--atlas-duration-fast) var(--atlas-ease-standard);
2554
+ transform-origin: center center;
2555
+ }
2556
+
2557
+ .atlas-button:active:not(:disabled) {
2558
+ transform: scale(0.97);
2559
+ filter: brightness(0.95);
2560
+ }
2561
+
2562
+ .atlas-button:disabled {
2563
+ opacity: 0.5;
2564
+ cursor: not-allowed;
2565
+ }
2566
+
2567
+ .atlas-button-ripple {
2568
+ position: absolute;
2569
+ border-radius: 50%;
2570
+ background-color: currentColor;
2571
+ opacity: 0.2;
2572
+ transform: scale(0);
2573
+ pointer-events: none;
2574
+ animation: atlas-ripple var(--atlas-duration-normal)
2575
+ var(--atlas-ease-decelerate) forwards;
2576
+ }
2577
+
2578
+ .atlas-button-spinner {
2579
+ display: inline-block;
2580
+ width: 1em;
2581
+ height: 1em;
2582
+ border: 2px solid currentColor;
2583
+ border-top-color: transparent;
2584
+ border-radius: 50%;
2585
+ animation: atlas-spin 600ms linear infinite;
2586
+ }
2587
+
2588
+ /* Card */
2589
+ .atlas-card {
2590
+ transition: transform var(--atlas-duration-normal) var(--atlas-ease-spring),
2591
+ box-shadow var(--atlas-duration-normal) var(--atlas-ease-standard);
2592
+ transform-style: preserve-3d;
2593
+ }
2594
+
2595
+ .atlas-card-shine {
2596
+ position: absolute;
2597
+ inset: 0;
2598
+ pointer-events: none;
2599
+ background: linear-gradient(
2600
+ 105deg,
2601
+ transparent 40%,
2602
+ rgba(255, 255, 255, 0.1) 45%,
2603
+ rgba(255, 255, 255, 0.3) 50%,
2604
+ rgba(255, 255, 255, 0.1) 55%,
2605
+ transparent 60%
2606
+ );
2607
+ background-size: 200% 200%;
2608
+ background-position: 100% 0%;
2609
+ opacity: 0;
2610
+ transition: opacity var(--atlas-duration-fast) var(--atlas-ease-standard);
2611
+ border-radius: inherit;
2612
+ }
2613
+
2614
+ .atlas-card:hover .atlas-card-shine {
2615
+ opacity: 1;
2616
+ }
2617
+
2618
+ /* Modal */
2619
+ .atlas-modal-backdrop {
2620
+ position: fixed;
2621
+ inset: 0;
2622
+ display: flex;
2623
+ align-items: center;
2624
+ justify-content: center;
2625
+ background-color: rgba(0, 0, 0, 0.5);
2626
+ backdrop-filter: blur(4px);
2627
+ }
2628
+
2629
+ .atlas-modal {
2630
+ animation: atlas-modal-in var(--atlas-duration-normal)
2631
+ var(--atlas-ease-spring) forwards;
2632
+ }
2633
+
2634
+ .atlas-modal-closing {
2635
+ animation: atlas-modal-out var(--atlas-duration-fast)
2636
+ var(--atlas-ease-accelerate) forwards;
2637
+ }
2638
+
2639
+ /* Drawer */
2640
+ .atlas-drawer-backdrop {
2641
+ position: fixed;
2642
+ inset: 0;
2643
+ background-color: rgba(0, 0, 0, 0.5);
2644
+ backdrop-filter: blur(4px);
2645
+ }
2646
+
2647
+ .atlas-drawer[data-side="left"] {
2648
+ animation: atlas-drawer-left-in var(--atlas-duration-normal)
2649
+ var(--atlas-ease-spring) forwards;
2650
+ }
2651
+
2652
+ .atlas-drawer[data-side="right"] {
2653
+ animation: atlas-drawer-right-in var(--atlas-duration-normal)
2654
+ var(--atlas-ease-spring) forwards;
2655
+ }
2656
+
2657
+ .atlas-drawer[data-side="top"] {
2658
+ animation: atlas-drawer-top-in var(--atlas-duration-normal)
2659
+ var(--atlas-ease-spring) forwards;
2660
+ }
2661
+
2662
+ .atlas-drawer[data-side="bottom"] {
2663
+ animation: atlas-drawer-bottom-in var(--atlas-duration-normal)
2664
+ var(--atlas-ease-spring) forwards;
2665
+ }
2666
+
2667
+ /* Dropdown */
2668
+ .atlas-dropdown-menu {
2669
+ animation: atlas-dropdown-in var(--atlas-duration-fast)
2670
+ var(--atlas-ease-spring) forwards;
2671
+ }
2672
+
2673
+ .atlas-dropdown-item {
2674
+ transition: background-color var(--atlas-duration-fast)
2675
+ var(--atlas-ease-standard);
2676
+ }
2677
+
2678
+ .atlas-dropdown-item:hover,
2679
+ .atlas-dropdown-focused {
2680
+ background-color: rgba(0, 0, 0, 0.05);
2681
+ }
2682
+
2683
+ .atlas-dropdown-item:active {
2684
+ background-color: rgba(0, 0, 0, 0.1);
2685
+ }
2686
+
2687
+ /* Toast */
2688
+ .atlas-toast-container {
2689
+ position: fixed;
2690
+ z-index: 500;
2691
+ display: flex;
2692
+ gap: 12px;
2693
+ pointer-events: none;
2694
+ }
2695
+
2696
+ .atlas-toast {
2697
+ pointer-events: auto;
2698
+ animation: atlas-toast-in-bottom var(--atlas-duration-normal)
2699
+ var(--atlas-ease-spring) forwards;
2700
+ }
2701
+
2702
+ .atlas-toast-container[data-position^="top"] .atlas-toast {
2703
+ animation-name: atlas-toast-in-top;
2704
+ }
2705
+
2706
+ .atlas-toast-icon svg {
2707
+ display: block;
2708
+ }
2709
+
2710
+ .atlas-toast-checkmark {
2711
+ stroke-dasharray: 20;
2712
+ stroke-dashoffset: 20;
2713
+ animation: atlas-checkmark-draw 300ms var(--atlas-ease-decelerate) 100ms
2714
+ forwards;
2715
+ }
2716
+
2717
+ .atlas-toast-progress {
2718
+ transform-origin: left;
2719
+ }
2720
+
2721
+ .atlas-toast-action:hover {
2722
+ background-color: rgba(0, 0, 0, 0.05);
2723
+ }
2724
+
2725
+ .atlas-toast-dismiss:hover {
2726
+ opacity: 1;
2727
+ }
2728
+
2729
+ /* Progress */
2730
+ .atlas-progress {
2731
+ position: relative;
2732
+ overflow: hidden;
2733
+ }
2734
+
2735
+ .atlas-progress-bar {
2736
+ position: absolute;
2737
+ top: 0;
2738
+ left: 0;
2739
+ height: 100%;
2740
+ transition: width var(--atlas-duration-normal) var(--atlas-ease-decelerate);
2741
+ }
2742
+
2743
+ .atlas-progress-shimmer {
2744
+ position: absolute;
2745
+ inset: 0;
2746
+ background: linear-gradient(
2747
+ 90deg,
2748
+ transparent 0%,
2749
+ rgba(255, 255, 255, 0.3) 50%,
2750
+ transparent 100%
2751
+ );
2752
+ animation: atlas-shimmer 1.5s infinite;
2753
+ }
2754
+
2755
+ .atlas-progress-indeterminate .atlas-progress-bar {
2756
+ animation: atlas-progress-indeterminate 1.5s ease-in-out infinite;
2757
+ }
2758
+
2759
+ /* Step Progress */
2760
+ .atlas-step-circle {
2761
+ transition: all var(--atlas-duration-normal) var(--atlas-ease-spring);
2762
+ }
2763
+
2764
+ .atlas-step-connector {
2765
+ transition: background var(--atlas-duration-normal) var(--atlas-ease-standard);
2766
+ }
2767
+
2768
+ /* Skeleton */
2769
+ .atlas-skeleton {
2770
+ background-color: var(--atlas-gray-200);
2771
+ position: relative;
2772
+ overflow: hidden;
2773
+ }
2774
+
2775
+ .atlas-skeleton-animation {
2776
+ position: absolute;
2777
+ inset: 0;
2778
+ }
2779
+
2780
+ .atlas-skeleton[data-animation="shimmer"] .atlas-skeleton-animation {
2781
+ background: linear-gradient(
2782
+ 90deg,
2783
+ transparent,
2784
+ rgba(255, 255, 255, 0.5),
2785
+ transparent
2786
+ );
2787
+ animation: atlas-skeleton-shimmer 1.5s var(--atlas-ease-standard) infinite;
2788
+ }
2789
+
2790
+ .atlas-skeleton[data-animation="pulse"] .atlas-skeleton-animation {
2791
+ animation: atlas-skeleton-pulse 1.5s var(--atlas-ease-standard) infinite;
2792
+ background-color: rgba(255, 255, 255, 0.3);
2793
+ }
2794
+
2795
+ .atlas-skeleton[data-animation="wave"] {
2796
+ background: linear-gradient(
2797
+ 90deg,
2798
+ var(--atlas-gray-200) 25%,
2799
+ var(--atlas-gray-100) 50%,
2800
+ var(--atlas-gray-200) 75%
2801
+ );
2802
+ background-size: 200% 100%;
2803
+ animation: atlas-skeleton-wave 1.5s var(--atlas-ease-standard) infinite;
2804
+ }
2805
+
2806
+ /* ==========================================================================
2807
+ Hover States (Desktop)
2808
+ ========================================================================== */
2809
+
2810
+ @media (hover: hover) {
2811
+ /* Gentle lift on hover */
2812
+ .atlas-hover-lift {
2813
+ transition: transform var(--atlas-duration-fast) var(--atlas-ease-standard),
2814
+ box-shadow var(--atlas-duration-fast) var(--atlas-ease-standard);
2815
+ }
2816
+
2817
+ .atlas-hover-lift:hover {
2818
+ transform: translateY(-2px);
2819
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
2820
+ }
2821
+
2822
+ /* Subtle glow on hover */
2823
+ .atlas-hover-glow {
2824
+ transition: box-shadow var(--atlas-duration-normal)
2825
+ var(--atlas-ease-standard),
2826
+ filter var(--atlas-duration-normal) var(--atlas-ease-standard);
2827
+ }
2828
+
2829
+ .atlas-hover-glow:hover {
2830
+ box-shadow: 0 0 20px rgba(var(--atlas-primary-rgb), 0.4);
2831
+ filter: brightness(1.05);
2832
+ }
2833
+
2834
+ /* Scale on hover */
2835
+ .atlas-hover-scale {
2836
+ transition: transform var(--atlas-duration-fast) var(--atlas-ease-spring);
2837
+ }
2838
+
2839
+ .atlas-hover-scale:hover {
2840
+ transform: scale(1.02);
2841
+ }
2842
+
2843
+ /* Breathing animation on hover */
2844
+ .atlas-hover-breathing:hover {
2845
+ animation: atlas-breathing 2s ease-in-out infinite;
2846
+ }
2847
+ }
2848
+
2849
+ /* ==========================================================================
2850
+ Focus States (Accessibility)
2851
+ ========================================================================== */
2852
+
2853
+ /* Only show focus ring for keyboard navigation */
2854
+ .atlas-focus-visible:focus-visible {
2855
+ outline: 2px solid var(--atlas-primary);
2856
+ outline-offset: 2px;
2857
+ }
2858
+
2859
+ /* Animated focus ring */
2860
+ .atlas-focus-pulse:focus-visible {
2861
+ animation: atlas-pulse 1.5s var(--atlas-ease-standard) infinite;
2862
+ }
2863
+
2864
+ /* ==========================================================================
2865
+ Stagger Animation Utilities
2866
+ ========================================================================== */
2867
+
2868
+ .atlas-stagger-item {
2869
+ opacity: 0;
2870
+ }
2871
+
2872
+ .atlas-stagger-fade-up {
2873
+ animation: atlas-slide-up var(--atlas-duration-normal)
2874
+ var(--atlas-ease-spring) forwards;
2875
+ }
2876
+
2877
+ .atlas-stagger-fade-down {
2878
+ animation: atlas-slide-down var(--atlas-duration-normal)
2879
+ var(--atlas-ease-spring) forwards;
2880
+ }
2881
+
2882
+ .atlas-stagger-fade-left {
2883
+ animation: atlas-slide-left var(--atlas-duration-normal)
2884
+ var(--atlas-ease-spring) forwards;
2885
+ }
2886
+
2887
+ .atlas-stagger-fade-right {
2888
+ animation: atlas-slide-right var(--atlas-duration-normal)
2889
+ var(--atlas-ease-spring) forwards;
2890
+ }
2891
+
2892
+ .atlas-stagger-scale {
2893
+ animation: atlas-scale-in var(--atlas-duration-normal)
2894
+ var(--atlas-ease-spring) forwards;
2895
+ }
2896
+
2897
+ .atlas-stagger-flip {
2898
+ animation: atlas-flip-in var(--atlas-duration-normal) var(--atlas-ease-spring)
2899
+ forwards;
2900
+ }
2901
+
2902
+ .atlas-stagger-zoom {
2903
+ animation: atlas-zoom-in var(--atlas-duration-normal) var(--atlas-ease-bounce)
2904
+ forwards;
2905
+ }
2906
+
2907
+ /* ==========================================================================
2908
+ Reduced Motion
2909
+ ========================================================================== */
2910
+
2911
+ @media (prefers-reduced-motion: reduce) {
2912
+ *,
2913
+ *::before,
2914
+ *::after {
2915
+ animation-duration: 0.01ms !important;
2916
+ animation-iteration-count: 1 !important;
2917
+ transition-duration: 0.01ms !important;
2918
+ }
2919
+ }
2920
+
2921
+
2051
2922
  /* ===== CORE ===== */
2052
2923
  /*!
2053
2924
  * CASOON Atlas Core - Design System Foundation for Tailwind v4
@@ -4601,6 +5472,110 @@
4601
5472
  --cs-glass-backdrop-filter-extra: none;
4602
5473
  }
4603
5474
 
5475
+ /* =========================================================
5476
+ CSS CUSTOM PROPERTIES FOR INLINE STYLES
5477
+ Duplicates @theme tokens as :root variables for use with var()
5478
+ ========================================================= */
5479
+ :root {
5480
+ /* === GLASS COLOR SYSTEM === */
5481
+ --cs-glass-white: #ffffff;
5482
+ --cs-glass-black: #000000;
5483
+ --cs-glass-blue: #3b82f6;
5484
+ --cs-glass-purple: #9333ea;
5485
+ --cs-glass-green: #22c55e;
5486
+ --cs-glass-pink: #ec4899;
5487
+ --cs-glass-amber: #f59e0b;
5488
+
5489
+ /* Glass background opacity tokens - Complete range */
5490
+ --cs-glass-bg-xs: rgba(255, 255, 255, 0.02);
5491
+ --cs-glass-bg-sm: rgba(255, 255, 255, 0.07);
5492
+ --cs-glass-bg-light: rgba(255, 255, 255, 0.1);
5493
+ --cs-glass-bg-weak: rgba(255, 255, 255, 0.05);
5494
+ --cs-glass-bg-md: rgba(255, 255, 255, 0.12);
5495
+ --cs-glass-bg-medium: rgba(255, 255, 255, 0.15);
5496
+ --cs-glass-bg-lg: rgba(255, 255, 255, 0.18);
5497
+ --cs-glass-bg-strong: rgba(255, 255, 255, 0.2);
5498
+ --cs-glass-bg-xl: rgba(255, 255, 255, 0.25);
5499
+ --cs-glass-bg-2xl: rgba(255, 255, 255, 0.35);
5500
+ --cs-glass-bg-3xl: rgba(255, 255, 255, 0.45);
5501
+ --cs-glass-bg-4xl: rgba(255, 255, 255, 0.6);
5502
+ --cs-glass-bg-5xl: rgba(255, 255, 255, 0.75);
5503
+
5504
+ /* Dark glass backgrounds - Complete range */
5505
+ --cs-glass-bg-dark: rgba(0, 0, 0, 0.1);
5506
+ --cs-glass-bg-dark-xs: rgba(0, 0, 0, 0.02);
5507
+ --cs-glass-bg-dark-sm: rgba(0, 0, 0, 0.07);
5508
+ --cs-glass-bg-dark-md: rgba(0, 0, 0, 0.12);
5509
+ --cs-glass-bg-dark-lg: rgba(0, 0, 0, 0.18);
5510
+ --cs-glass-bg-dark-strong: rgba(0, 0, 0, 0.2);
5511
+ --cs-glass-bg-dark-xl: rgba(0, 0, 0, 0.25);
5512
+ --cs-glass-bg-dark-2xl: rgba(0, 0, 0, 0.35);
5513
+ --cs-glass-bg-dark-3xl: rgba(0, 0, 0, 0.45);
5514
+ --cs-glass-bg-dark-4xl: rgba(0, 0, 0, 0.6);
5515
+ --cs-glass-bg-dark-5xl: rgba(0, 0, 0, 0.75);
5516
+
5517
+ /* Colored glass backgrounds */
5518
+ --cs-glass-bg-blue: rgba(59, 130, 246, 0.1);
5519
+ --cs-glass-bg-purple: rgba(147, 51, 234, 0.1);
5520
+ --cs-glass-bg-green: rgba(34, 197, 94, 0.1);
5521
+ --cs-glass-bg-pink: rgba(236, 72, 153, 0.1);
5522
+ --cs-glass-bg-amber: rgba(245, 158, 11, 0.1);
5523
+
5524
+ /* Glass border opacity tokens - Complete range */
5525
+ --cs-glass-border-xs: rgba(255, 255, 255, 0.05);
5526
+ --cs-glass-border-sm: rgba(255, 255, 255, 0.08);
5527
+ --cs-glass-border-light: rgba(255, 255, 255, 0.1);
5528
+ --cs-glass-border-md: rgba(255, 255, 255, 0.15);
5529
+ --cs-glass-border-medium: rgba(255, 255, 255, 0.2);
5530
+ --cs-glass-border-lg: rgba(255, 255, 255, 0.25);
5531
+ --cs-glass-border-strong: rgba(255, 255, 255, 0.3);
5532
+ --cs-glass-border-xl: rgba(255, 255, 255, 0.4);
5533
+ --cs-glass-border-2xl: rgba(255, 255, 255, 0.5);
5534
+ --cs-glass-border-3xl: rgba(255, 255, 255, 0.65);
5535
+
5536
+ /* Colored glass borders */
5537
+ --cs-glass-border-blue: rgba(59, 130, 246, 0.2);
5538
+ --cs-glass-border-purple: rgba(147, 51, 234, 0.2);
5539
+ --cs-glass-border-green: rgba(34, 197, 94, 0.2);
5540
+ --cs-glass-border-pink: rgba(236, 72, 153, 0.2);
5541
+ --cs-glass-border-amber: rgba(245, 158, 11, 0.2);
5542
+
5543
+ /* Glass effects tokens */
5544
+ --cs-glass-blur-sm: 8px;
5545
+ --cs-glass-blur: 16px;
5546
+ --cs-glass-blur-lg: 24px;
5547
+ --cs-glass-blur-xl: 32px;
5548
+
5549
+ --cs-glass-radius-sm: 0.25rem;
5550
+ --cs-glass-radius: 0.5rem;
5551
+ --cs-glass-radius-lg: 0.75rem;
5552
+ --cs-glass-radius-xl: 1rem;
5553
+ --cs-glass-radius-2xl: 1.5rem;
5554
+ --cs-glass-radius-3xl: 2rem;
5555
+
5556
+ /* Glass shadow tokens */
5557
+ --cs-glass-shadow-light: rgba(0, 0, 0, 0.05);
5558
+ --cs-glass-shadow-medium: rgba(0, 0, 0, 0.1);
5559
+ --cs-glass-shadow-strong: rgba(0, 0, 0, 0.15);
5560
+ --cs-glass-shadow-xl: rgba(0, 0, 0, 0.2);
5561
+
5562
+ /* Glass misc tokens */
5563
+ --cs-glass-transition: 0.3s;
5564
+ --cs-glass-tooltip-bg: rgba(0, 0, 0, 0.8);
5565
+ --cs-glass-bg-hover: rgba(255, 255, 255, 0.15);
5566
+ --cs-glass-bg-light-hover: rgba(255, 255, 255, 0.25);
5567
+ --cs-glass-bg-contrast: rgba(255, 255, 255, 0.2);
5568
+ --cs-glass-bg-dark-contrast: rgba(0, 0, 0, 0.2);
5569
+ --cs-glass-bg-fallback: rgba(255, 255, 255, 0.25);
5570
+ --cs-glass-bg-dark-fallback: rgba(0, 0, 0, 0.25);
5571
+ --cs-glass-bg-blue-fallback: rgba(59, 130, 246, 0.2);
5572
+ --cs-glass-bg-purple-fallback: rgba(147, 51, 234, 0.2);
5573
+ --cs-glass-bg-green-fallback: rgba(34, 197, 94, 0.2);
5574
+ --cs-glass-bg-pink-fallback: rgba(236, 72, 153, 0.2);
5575
+ --cs-glass-bg-amber-fallback: rgba(245, 158, 11, 0.2);
5576
+ --cs-glass-focus-ring: rgba(59, 130, 246, 0.5);
5577
+ }
5578
+
4604
5579
  /* =========================================================
4605
5580
  CORE GLASS UTILITIES
4606
5581
  Base glass backdrop-filter utilities
@@ -5876,6 +6851,49 @@
5876
6851
  );
5877
6852
  }
5878
6853
 
6854
+ /* =========================================================
6855
+ CSS CUSTOM PROPERTIES FOR INLINE STYLES
6856
+ Duplicates @theme tokens as :root variables for use with var()
6857
+ ========================================================= */
6858
+ :root {
6859
+ /* Base palette colors */
6860
+ --cs-text: #0f172a;
6861
+ --cs-text-inverse: #ffffff;
6862
+ --cs-bg: #ffffff;
6863
+ --cs-surface: #ffffff;
6864
+ --cs-surface-2: #f8fafc;
6865
+ --cs-border: #e5e7eb;
6866
+
6867
+ /* Orb colors */
6868
+ --cs-orb-blue: #3b82f6;
6869
+ --cs-orb-blue-light: #93c5fd;
6870
+ --cs-orb-blue-lighter: #dbeafe;
6871
+ --cs-orb-purple: #9333ea;
6872
+ --cs-orb-purple-light: #c4b5fd;
6873
+ --cs-orb-purple-lighter: #ede9fe;
6874
+ --cs-orb-pink: #ec4899;
6875
+ --cs-orb-pink-light: #fbcfe8;
6876
+ --cs-orb-pink-lighter: #fdf2f8;
6877
+ --cs-orb-custom-primary: #667eea;
6878
+ --cs-orb-custom-secondary: #764ba2;
6879
+ --cs-orb-custom-accent: #f093fb;
6880
+ --cs-orb-green: #22c55e;
6881
+ --cs-orb-amber: #f59e0b;
6882
+
6883
+ /* Opacity tokens */
6884
+ --cs-opacity-strong: 0.5;
6885
+ --cs-opacity-medium: 0.3;
6886
+ --cs-opacity-weak: 0.1;
6887
+
6888
+ /* Motion & transitions */
6889
+ --cs-transition: 180ms cubic-bezier(0.2, 0.8, 0.2, 1);
6890
+ --cs-anim-ease-inout: cubic-bezier(0.4, 0, 0.2, 1);
6891
+ --cs-anim-ease-emph: cubic-bezier(0.2, 0.8, 0.2, 1);
6892
+ --cs-anim-duration-float: 6s;
6893
+ --cs-anim-duration-pulse: 4s;
6894
+ --cs-anim-duration-drift: 8s;
6895
+ }
6896
+
5879
6897
  /* =========================================================
5880
6898
  Base Orb Utility
5881
6899
  ========================================================= */