santycss 1.0.0 → 1.2.0
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/README.md +381 -1
- package/dist/santy-animations.css +319 -9
- package/dist/santy-components.css +900 -680
- package/dist/santy-core.css +11335 -11335
- package/dist/santy-email.css +192 -0
- package/dist/santy.css +538 -8
- package/dist/santy.min.css +1 -1
- package/index.js +2 -0
- package/lib/animations.js +318 -8
- package/package.json +18 -15
package/dist/santy.css
CHANGED
|
@@ -11377,16 +11377,43 @@
|
|
|
11377
11377
|
.animation-fill-both { animation-fill-mode: both; }
|
|
11378
11378
|
|
|
11379
11379
|
/* ── Timing-function helpers ── */
|
|
11380
|
-
.animation-ease
|
|
11381
|
-
.animation-ease-in
|
|
11382
|
-
.animation-ease-out
|
|
11383
|
-
.animation-ease-in-out
|
|
11384
|
-
.animation-linear
|
|
11380
|
+
.animation-ease { animation-timing-function: ease; }
|
|
11381
|
+
.animation-ease-in { animation-timing-function: ease-in; }
|
|
11382
|
+
.animation-ease-out { animation-timing-function: ease-out; }
|
|
11383
|
+
.animation-ease-in-out { animation-timing-function: ease-in-out; }
|
|
11384
|
+
.animation-linear { animation-timing-function: linear; }
|
|
11385
|
+
.animation-ease-bounce { animation-timing-function: cubic-bezier(0.34,1.56,0.64,1); }
|
|
11386
|
+
.animation-ease-elastic { animation-timing-function: cubic-bezier(0.68,-0.55,0.265,1.55); }
|
|
11387
|
+
.animation-ease-spring { animation-timing-function: cubic-bezier(0.175,0.885,0.32,1.275); }
|
|
11388
|
+
|
|
11389
|
+
/* ── Direction helpers ── */
|
|
11390
|
+
.animation-direction-normal { animation-direction: normal; }
|
|
11391
|
+
.animation-direction-reverse { animation-direction: reverse; }
|
|
11392
|
+
.animation-direction-alternate { animation-direction: alternate; }
|
|
11393
|
+
.animation-direction-alternate-reverse { animation-direction: alternate-reverse; }
|
|
11394
|
+
|
|
11395
|
+
/* ── Extra delay helpers ── */
|
|
11396
|
+
.animation-delay-750 { animation-delay: 0.75s; }
|
|
11397
|
+
.animation-delay-1250 { animation-delay: 1.25s; }
|
|
11398
|
+
.animation-delay-1500 { animation-delay: 1.5s; }
|
|
11399
|
+
.animation-delay-2500 { animation-delay: 2.5s; }
|
|
11400
|
+
.animation-delay-3000 { animation-delay: 3s; }
|
|
11401
|
+
.animation-delay-4000 { animation-delay: 4s; }
|
|
11402
|
+
.animation-delay-5000 { animation-delay: 5s; }
|
|
11403
|
+
|
|
11404
|
+
/* ── Extra speed helpers ── */
|
|
11405
|
+
.animation-speed-ultra-fast { animation-duration: 0.15s !important; }
|
|
11406
|
+
|
|
11407
|
+
/* ── Extra iteration helpers ── */
|
|
11408
|
+
.animation-iteration-2 { animation-iteration-count: 2; }
|
|
11409
|
+
.animation-iteration-4 { animation-iteration-count: 4; }
|
|
11410
|
+
.animation-iteration-5 { animation-iteration-count: 5; }
|
|
11385
11411
|
|
|
11386
11412
|
/* ── Pause / play ── */
|
|
11387
|
-
.animation-paused
|
|
11388
|
-
.animation-running{ animation-play-state: running; }
|
|
11389
|
-
.animation-none
|
|
11413
|
+
.animation-paused { animation-play-state: paused; }
|
|
11414
|
+
.animation-running { animation-play-state: running; }
|
|
11415
|
+
.animation-none { animation: none; }
|
|
11416
|
+
.animation-pause-on-hover:hover { animation-play-state: paused; }
|
|
11390
11417
|
|
|
11391
11418
|
/* ════════════════════════════════════════════════════
|
|
11392
11419
|
ATTENTION SEEKERS
|
|
@@ -11855,6 +11882,289 @@
|
|
|
11855
11882
|
@keyframes santy-roll-in { from { opacity: 0; transform: translate3d(-100%,0,0) rotate3d(0,0,1,-120deg); } to { opacity: 1; transform: translate3d(0,0,0); } }
|
|
11856
11883
|
@keyframes santy-roll-out { from { opacity: 1; } to { opacity: 0; transform: translate3d(100%,0,0) rotate3d(0,0,1,120deg); } }
|
|
11857
11884
|
|
|
11885
|
+
/* ═══════════════════════════════════════════════════════════════════════
|
|
11886
|
+
SCROLL-TRIGGERED ANIMATIONS
|
|
11887
|
+
Uses Intersection Observer via tiny JS snippet OR animation-timeline.
|
|
11888
|
+
Add class + JS observer, or use with animate-on-scroll-* pattern.
|
|
11889
|
+
Pure CSS fallback: elements start invisible, JS adds .is-visible.
|
|
11890
|
+
═══════════════════════════════════════════════════════════════════════ */
|
|
11891
|
+
|
|
11892
|
+
/* Base: elements are hidden until .is-visible is toggled by JS */
|
|
11893
|
+
.animate-on-scroll-fade-in { opacity: 0; transition: opacity 0.6s ease, transform 0.6s ease; }
|
|
11894
|
+
.animate-on-scroll-slide-up { opacity: 0; transform: translateY(40px); transition: opacity 0.6s ease, transform 0.6s ease; }
|
|
11895
|
+
.animate-on-scroll-slide-down { opacity: 0; transform: translateY(-40px); transition: opacity 0.6s ease, transform 0.6s ease; }
|
|
11896
|
+
.animate-on-scroll-zoom-in { opacity: 0; transform: scale(0.85); transition: opacity 0.6s ease, transform 0.6s ease; }
|
|
11897
|
+
.animate-on-scroll-from-left { opacity: 0; transform: translateX(-60px); transition: opacity 0.6s ease, transform 0.6s ease; }
|
|
11898
|
+
.animate-on-scroll-from-right { opacity: 0; transform: translateX(60px); transition: opacity 0.6s ease, transform 0.6s ease; }
|
|
11899
|
+
.animate-on-scroll-flip-up { opacity: 0; transform: rotateX(30deg); transition: opacity 0.6s ease, transform 0.6s ease; }
|
|
11900
|
+
|
|
11901
|
+
/* Triggered state — add .is-visible via IntersectionObserver */
|
|
11902
|
+
.animate-on-scroll-fade-in.is-visible,
|
|
11903
|
+
.animate-on-scroll-slide-up.is-visible,
|
|
11904
|
+
.animate-on-scroll-slide-down.is-visible,
|
|
11905
|
+
.animate-on-scroll-zoom-in.is-visible,
|
|
11906
|
+
.animate-on-scroll-from-left.is-visible,
|
|
11907
|
+
.animate-on-scroll-from-right.is-visible,
|
|
11908
|
+
.animate-on-scroll-flip-up.is-visible { opacity: 1; transform: none; }
|
|
11909
|
+
|
|
11910
|
+
/* scroll-reveal-once / scroll-reveal-repeat — same trigger, different JS behaviour */
|
|
11911
|
+
.scroll-reveal-once,
|
|
11912
|
+
.scroll-reveal-repeat { opacity: 0; transform: translateY(30px); transition: opacity 0.55s ease, transform 0.55s ease; }
|
|
11913
|
+
.scroll-reveal-once.is-visible,
|
|
11914
|
+
.scroll-reveal-repeat.is-visible { opacity: 1; transform: none; }
|
|
11915
|
+
|
|
11916
|
+
/* Delay modifiers for scroll reveals */
|
|
11917
|
+
.scroll-reveal-delay-100 { transition-delay: 0.1s; }
|
|
11918
|
+
.scroll-reveal-delay-200 { transition-delay: 0.2s; }
|
|
11919
|
+
.scroll-reveal-delay-300 { transition-delay: 0.3s; }
|
|
11920
|
+
.scroll-reveal-delay-400 { transition-delay: 0.4s; }
|
|
11921
|
+
.scroll-reveal-delay-500 { transition-delay: 0.5s; }
|
|
11922
|
+
|
|
11923
|
+
/* ═══════════════════════════════════════════════════════════════════════
|
|
11924
|
+
HOVER-TRIGGERED ANIMATIONS
|
|
11925
|
+
These override animation only on :hover so they fire on mouse-over.
|
|
11926
|
+
═══════════════════════════════════════════════════════════════════════ */
|
|
11927
|
+
.on-hover:animate-bounce:hover { animation: santy-bounce 0.8s ease both; }
|
|
11928
|
+
.on-hover:animate-pulse:hover { animation: santy-pulse 1s ease both; }
|
|
11929
|
+
.on-hover:animate-shake-x:hover { animation: santy-shake-x 0.6s ease both; }
|
|
11930
|
+
.on-hover:animate-rubber-band:hover { animation: santy-rubber-band 0.8s ease both; }
|
|
11931
|
+
.on-hover:animate-tada:hover { animation: santy-tada 0.8s ease both; }
|
|
11932
|
+
.on-hover:animate-wobble:hover { animation: santy-wobble 0.8s ease both; }
|
|
11933
|
+
.on-hover:animate-swing:hover { animation: santy-swing 0.8s ease both; transform-origin: top center; }
|
|
11934
|
+
.on-hover:animate-heartbeat:hover { animation: santy-heartbeat 1s ease-in-out both; }
|
|
11935
|
+
.on-hover:animate-spin-once:hover { animation: santy-spin 0.5s linear both; }
|
|
11936
|
+
.on-hover:animate-flip-once:hover { animation: santy-flip-in-y 0.6s ease both; }
|
|
11937
|
+
.on-hover:animate-jello:hover { animation: santy-jelly 0.9s ease both; }
|
|
11938
|
+
.on-hover:animate-zoom-in:hover { animation: santy-zoom-in 0.3s ease both; }
|
|
11939
|
+
.on-hover:animate-fade-in:hover { animation: santy-fade-in 0.4s ease both; }
|
|
11940
|
+
|
|
11941
|
+
/* ═══════════════════════════════════════════════════════════════════════
|
|
11942
|
+
TEXT ANIMATIONS
|
|
11943
|
+
═══════════════════════════════════════════════════════════════════════ */
|
|
11944
|
+
|
|
11945
|
+
/* Typewriter — pure CSS using steps() */
|
|
11946
|
+
.animate-typewriter {
|
|
11947
|
+
overflow: hidden;
|
|
11948
|
+
white-space: nowrap;
|
|
11949
|
+
border-right: 2px solid currentColor;
|
|
11950
|
+
width: 0;
|
|
11951
|
+
animation: santy-typewriter 2.5s steps(30,end) forwards, santy-blink-caret 0.75s step-end infinite;
|
|
11952
|
+
}
|
|
11953
|
+
/* Blur-in entrance */
|
|
11954
|
+
.animate-text-blur-in { animation: santy-text-blur-in 0.8s ease both; }
|
|
11955
|
+
/* Slide up per-word (apply to the text container) */
|
|
11956
|
+
.animate-text-slide-up { animation: santy-slide-up 0.5s ease both; }
|
|
11957
|
+
/* Gradient flow — animated gradient on text */
|
|
11958
|
+
.animate-text-gradient-flow {
|
|
11959
|
+
background: linear-gradient(90deg, #3b82f6, #8b5cf6, #ec4899, #3b82f6);
|
|
11960
|
+
background-size: 300% 100%;
|
|
11961
|
+
-webkit-background-clip: text;
|
|
11962
|
+
background-clip: text;
|
|
11963
|
+
-webkit-text-fill-color: transparent;
|
|
11964
|
+
animation: santy-gradient-shift 3s linear infinite;
|
|
11965
|
+
}
|
|
11966
|
+
/* Letter wave — each letter must be wrapped in a span via JS */
|
|
11967
|
+
.animate-text-wave span { display: inline-block; animation: santy-text-wave 1s ease infinite; }
|
|
11968
|
+
.animate-text-wave span:nth-child(1) { animation-delay: 0s; }
|
|
11969
|
+
.animate-text-wave span:nth-child(2) { animation-delay: 0.08s; }
|
|
11970
|
+
.animate-text-wave span:nth-child(3) { animation-delay: 0.16s; }
|
|
11971
|
+
.animate-text-wave span:nth-child(4) { animation-delay: 0.24s; }
|
|
11972
|
+
.animate-text-wave span:nth-child(5) { animation-delay: 0.32s; }
|
|
11973
|
+
.animate-text-wave span:nth-child(6) { animation-delay: 0.40s; }
|
|
11974
|
+
.animate-text-wave span:nth-child(7) { animation-delay: 0.48s; }
|
|
11975
|
+
.animate-text-wave span:nth-child(8) { animation-delay: 0.56s; }
|
|
11976
|
+
/* Glitch */
|
|
11977
|
+
.animate-text-glitch { animation: santy-text-glitch 0.5s linear infinite; }
|
|
11978
|
+
/* Neon pulse */
|
|
11979
|
+
.animate-text-neon-pulse { animation: santy-neon-pulse 1.5s ease-in-out infinite alternate; }
|
|
11980
|
+
|
|
11981
|
+
@keyframes santy-typewriter { to { width: 100%; } }
|
|
11982
|
+
@keyframes santy-blink-caret { 50% { border-color: transparent; } }
|
|
11983
|
+
@keyframes santy-text-blur-in { from { filter: blur(12px); opacity: 0; } to { filter: blur(0); opacity: 1; } }
|
|
11984
|
+
@keyframes santy-text-wave { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
|
|
11985
|
+
@keyframes santy-text-glitch {
|
|
11986
|
+
0%,100% { text-shadow: none; transform: none; }
|
|
11987
|
+
20% { text-shadow: -2px 0 #ff00c1, 2px 0 #00fff9; transform: skewX(-2deg); }
|
|
11988
|
+
40% { text-shadow: 2px 0 #ff00c1, -2px 0 #00fff9; transform: skewX(2deg); }
|
|
11989
|
+
60% { text-shadow: -2px 0 #00fff9; transform: skewX(0deg); }
|
|
11990
|
+
80% { text-shadow: 2px 0 #ff00c1; }
|
|
11991
|
+
}
|
|
11992
|
+
@keyframes santy-neon-pulse {
|
|
11993
|
+
from { text-shadow: 0 0 4px currentColor, 0 0 10px currentColor; }
|
|
11994
|
+
to { text-shadow: 0 0 8px currentColor, 0 0 20px currentColor, 0 0 40px currentColor; }
|
|
11995
|
+
}
|
|
11996
|
+
|
|
11997
|
+
/* ═══════════════════════════════════════════════════════════════════════
|
|
11998
|
+
STAGGERED ENTRANCE SEQUENCES
|
|
11999
|
+
Apply parent class; children get incremental delays via nth-child.
|
|
12000
|
+
═══════════════════════════════════════════════════════════════════════ */
|
|
12001
|
+
.animate-stagger-fade-in > * { animation: santy-fade-in 0.5s ease both; }
|
|
12002
|
+
.animate-stagger-slide-up > * { animation: santy-slide-up 0.5s ease both; }
|
|
12003
|
+
.animate-stagger-zoom-in > * { animation: santy-zoom-in 0.4s ease both; }
|
|
12004
|
+
.animate-stagger-from-left > * { animation: santy-fade-in-from-left 0.5s ease both; }
|
|
12005
|
+
.animate-stagger-from-right > * { animation: santy-fade-in-from-right 0.5s ease both; }
|
|
12006
|
+
|
|
12007
|
+
/* Delay each child — 100ms steps */
|
|
12008
|
+
.animate-stagger-children-100 > *:nth-child(1) { animation-delay: 0.0s; }
|
|
12009
|
+
.animate-stagger-children-100 > *:nth-child(2) { animation-delay: 0.1s; }
|
|
12010
|
+
.animate-stagger-children-100 > *:nth-child(3) { animation-delay: 0.2s; }
|
|
12011
|
+
.animate-stagger-children-100 > *:nth-child(4) { animation-delay: 0.3s; }
|
|
12012
|
+
.animate-stagger-children-100 > *:nth-child(5) { animation-delay: 0.4s; }
|
|
12013
|
+
.animate-stagger-children-100 > *:nth-child(6) { animation-delay: 0.5s; }
|
|
12014
|
+
.animate-stagger-children-100 > *:nth-child(7) { animation-delay: 0.6s; }
|
|
12015
|
+
.animate-stagger-children-100 > *:nth-child(8) { animation-delay: 0.7s; }
|
|
12016
|
+
.animate-stagger-children-100 > *:nth-child(9) { animation-delay: 0.8s; }
|
|
12017
|
+
.animate-stagger-children-100 > *:nth-child(10) { animation-delay: 0.9s; }
|
|
12018
|
+
/* 200ms steps */
|
|
12019
|
+
.animate-stagger-children-200 > *:nth-child(1) { animation-delay: 0.0s; }
|
|
12020
|
+
.animate-stagger-children-200 > *:nth-child(2) { animation-delay: 0.2s; }
|
|
12021
|
+
.animate-stagger-children-200 > *:nth-child(3) { animation-delay: 0.4s; }
|
|
12022
|
+
.animate-stagger-children-200 > *:nth-child(4) { animation-delay: 0.6s; }
|
|
12023
|
+
.animate-stagger-children-200 > *:nth-child(5) { animation-delay: 0.8s; }
|
|
12024
|
+
.animate-stagger-children-200 > *:nth-child(6) { animation-delay: 1.0s; }
|
|
12025
|
+
.animate-stagger-children-200 > *:nth-child(7) { animation-delay: 1.2s; }
|
|
12026
|
+
.animate-stagger-children-200 > *:nth-child(8) { animation-delay: 1.4s; }
|
|
12027
|
+
/* 300ms steps */
|
|
12028
|
+
.animate-stagger-children-300 > *:nth-child(1) { animation-delay: 0.0s; }
|
|
12029
|
+
.animate-stagger-children-300 > *:nth-child(2) { animation-delay: 0.3s; }
|
|
12030
|
+
.animate-stagger-children-300 > *:nth-child(3) { animation-delay: 0.6s; }
|
|
12031
|
+
.animate-stagger-children-300 > *:nth-child(4) { animation-delay: 0.9s; }
|
|
12032
|
+
.animate-stagger-children-300 > *:nth-child(5) { animation-delay: 1.2s; }
|
|
12033
|
+
.animate-stagger-children-300 > *:nth-child(6) { animation-delay: 1.5s; }
|
|
12034
|
+
|
|
12035
|
+
/* ═══════════════════════════════════════════════════════════════════════
|
|
12036
|
+
MORPHING & SHAPE ANIMATIONS
|
|
12037
|
+
═══════════════════════════════════════════════════════════════════════ */
|
|
12038
|
+
.animate-morph-blob { animation: santy-morph-blob 6s ease-in-out infinite; }
|
|
12039
|
+
.animate-border-spin { animation: santy-border-spin 2s linear infinite; background: conic-gradient(from 0deg, #3b82f6, #8b5cf6, #ec4899, #3b82f6); }
|
|
12040
|
+
.animate-shimmer { overflow: hidden; position: relative; background: #f0f0f0; }
|
|
12041
|
+
.animate-shimmer::after {
|
|
12042
|
+
content: '';
|
|
12043
|
+
position: absolute;
|
|
12044
|
+
inset: 0;
|
|
12045
|
+
background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.7) 50%, transparent 100%);
|
|
12046
|
+
animation: santy-shimmer 1.5s ease-in-out infinite;
|
|
12047
|
+
}
|
|
12048
|
+
.animate-gradient-shift { background-size: 200% 200%; animation: santy-gradient-shift 3s ease infinite; }
|
|
12049
|
+
.animate-morph-circle-to-square { animation: santy-morph-circle-to-square 1.5s ease-in-out infinite alternate; }
|
|
12050
|
+
.animate-liquid { animation: santy-liquid 3s ease-in-out infinite; }
|
|
12051
|
+
|
|
12052
|
+
@keyframes santy-morph-blob {
|
|
12053
|
+
0%,100% { border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%; }
|
|
12054
|
+
25% { border-radius: 30% 60% 70% 40% / 50% 60% 30% 60%; }
|
|
12055
|
+
50% { border-radius: 50% 60% 30% 60% / 40% 50% 60% 50%; }
|
|
12056
|
+
75% { border-radius: 40% 70% 60% 30% / 60% 40% 50% 70%; }
|
|
12057
|
+
}
|
|
12058
|
+
@keyframes santy-border-spin { to { transform: rotate(360deg); } }
|
|
12059
|
+
@keyframes santy-shimmer { from { transform: translateX(-100%); } to { transform: translateX(100%); } }
|
|
12060
|
+
@keyframes santy-gradient-shift { 0%,100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } }
|
|
12061
|
+
@keyframes santy-morph-circle-to-square { from { border-radius: 50%; } to { border-radius: 0%; } }
|
|
12062
|
+
@keyframes santy-liquid {
|
|
12063
|
+
0%,100% { border-radius: 40% 60% 60% 40% / 60% 30% 70% 40%; transform: rotate(0deg); }
|
|
12064
|
+
50% { border-radius: 60% 40% 30% 70% / 40% 60% 30% 60%; transform: rotate(5deg); }
|
|
12065
|
+
}
|
|
12066
|
+
|
|
12067
|
+
/* ═══════════════════════════════════════════════════════════════════════
|
|
12068
|
+
3D ANIMATIONS
|
|
12069
|
+
═══════════════════════════════════════════════════════════════════════ */
|
|
12070
|
+
.animate-flip-3d-x { animation: santy-flip-3d-x 0.7s ease both; }
|
|
12071
|
+
.animate-flip-3d-y { animation: santy-flip-3d-y 0.7s ease both; }
|
|
12072
|
+
.animate-rotate-3d { animation: santy-rotate-3d 1.2s linear infinite; }
|
|
12073
|
+
.animate-tilt-left { animation: santy-tilt-left 0.4s ease both; }
|
|
12074
|
+
.animate-tilt-right { animation: santy-tilt-right 0.4s ease both; }
|
|
12075
|
+
.animate-depth-in { animation: santy-depth-in 0.5s ease both; }
|
|
12076
|
+
.animate-depth-out { animation: santy-depth-out 0.5s ease both; }
|
|
12077
|
+
.animate-swing-3d { animation: santy-swing-3d 1s ease-in-out infinite; transform-origin: top center; perspective: 400px; }
|
|
12078
|
+
|
|
12079
|
+
@keyframes santy-flip-3d-x { from { transform: perspective(400px) rotateX(90deg); opacity: 0; } to { transform: perspective(400px) rotateX(0deg); opacity: 1; } }
|
|
12080
|
+
@keyframes santy-flip-3d-y { from { transform: perspective(400px) rotateY(90deg); opacity: 0; } to { transform: perspective(400px) rotateY(0deg); opacity: 1; } }
|
|
12081
|
+
@keyframes santy-rotate-3d { from { transform: perspective(400px) rotate3d(1,1,0,0deg); } to { transform: perspective(400px) rotate3d(1,1,0,360deg); } }
|
|
12082
|
+
@keyframes santy-tilt-left { from { transform: rotate(0deg); } to { transform: rotate(-6deg); } }
|
|
12083
|
+
@keyframes santy-tilt-right { from { transform: rotate(0deg); } to { transform: rotate(6deg); } }
|
|
12084
|
+
@keyframes santy-depth-in { from { transform: perspective(600px) translateZ(-80px); opacity: 0; } to { transform: perspective(600px) translateZ(0); opacity: 1; } }
|
|
12085
|
+
@keyframes santy-depth-out { from { transform: perspective(600px) translateZ(0); opacity: 1; } to { transform: perspective(600px) translateZ(-80px); opacity: 0; } }
|
|
12086
|
+
@keyframes santy-swing-3d {
|
|
12087
|
+
0%,100% { transform: perspective(400px) rotateY(0deg); }
|
|
12088
|
+
25% { transform: perspective(400px) rotateY(15deg); }
|
|
12089
|
+
75% { transform: perspective(400px) rotateY(-15deg); }
|
|
12090
|
+
}
|
|
12091
|
+
|
|
12092
|
+
/* ═══════════════════════════════════════════════════════════════════════
|
|
12093
|
+
EXIT + PAGE TRANSITION ANIMATIONS
|
|
12094
|
+
═══════════════════════════════════════════════════════════════════════ */
|
|
12095
|
+
.animate-exit-fade-out { animation: santy-fade-out 0.4s ease both; }
|
|
12096
|
+
.animate-exit-slide-left { animation: santy-exit-slide-left 0.4s ease both; }
|
|
12097
|
+
.animate-exit-slide-right { animation: santy-exit-slide-right 0.4s ease both; }
|
|
12098
|
+
.animate-exit-scale-down { animation: santy-exit-scale-down 0.35s ease both; }
|
|
12099
|
+
.animate-exit-flip-out { animation: santy-flip-out 0.5s ease both; }
|
|
12100
|
+
.animate-page-in-from-right { animation: santy-page-in-right 0.4s cubic-bezier(0.25,0.46,0.45,0.94) both; }
|
|
12101
|
+
.animate-page-in-from-left { animation: santy-page-in-left 0.4s cubic-bezier(0.25,0.46,0.45,0.94) both; }
|
|
12102
|
+
.animate-page-out-to-left { animation: santy-page-out-left 0.4s cubic-bezier(0.25,0.46,0.45,0.94) both; }
|
|
12103
|
+
.animate-page-out-to-right { animation: santy-page-out-right 0.4s cubic-bezier(0.25,0.46,0.45,0.94) both; }
|
|
12104
|
+
|
|
12105
|
+
@keyframes santy-exit-slide-left { from { opacity: 1; transform: translateX(0); } to { opacity: 0; transform: translateX(-60px); } }
|
|
12106
|
+
@keyframes santy-exit-slide-right { from { opacity: 1; transform: translateX(0); } to { opacity: 0; transform: translateX(60px); } }
|
|
12107
|
+
@keyframes santy-exit-scale-down { from { opacity: 1; transform: scale(1); } to { opacity: 0; transform: scale(0.85); } }
|
|
12108
|
+
@keyframes santy-page-in-right { from { opacity: 0; transform: translateX(100%); } to { opacity: 1; transform: translateX(0); } }
|
|
12109
|
+
@keyframes santy-page-in-left { from { opacity: 0; transform: translateX(-100%); } to { opacity: 1; transform: translateX(0); } }
|
|
12110
|
+
@keyframes santy-page-out-left { from { opacity: 1; transform: translateX(0); } to { opacity: 0; transform: translateX(-100%); } }
|
|
12111
|
+
@keyframes santy-page-out-right { from { opacity: 1; transform: translateX(0); } to { opacity: 0; transform: translateX(100%); } }
|
|
12112
|
+
|
|
12113
|
+
/* View Transitions API */
|
|
12114
|
+
.view-transition-fade { view-transition-name: fade-transition; }
|
|
12115
|
+
.view-transition-slide { view-transition-name: slide-transition; }
|
|
12116
|
+
@keyframes santy-vt-fade-in { from { opacity: 0; } }
|
|
12117
|
+
@keyframes santy-vt-fade-out { to { opacity: 0; } }
|
|
12118
|
+
::view-transition-old(fade-transition) { animation: santy-vt-fade-out 0.3s ease; }
|
|
12119
|
+
::view-transition-new(fade-transition) { animation: santy-vt-fade-in 0.3s ease; }
|
|
12120
|
+
::view-transition-old(slide-transition) { animation: santy-page-out-left 0.35s ease; }
|
|
12121
|
+
::view-transition-new(slide-transition) { animation: santy-page-in-right 0.35s ease; }
|
|
12122
|
+
|
|
12123
|
+
/* ═══════════════════════════════════════════════════════════════════════
|
|
12124
|
+
NOTIFICATION & UI FEEDBACK ANIMATIONS
|
|
12125
|
+
═══════════════════════════════════════════════════════════════════════ */
|
|
12126
|
+
.animate-toast-in { animation: santy-toast-in 0.4s cubic-bezier(0.25,0.46,0.45,0.94) both; }
|
|
12127
|
+
.animate-toast-out { animation: santy-toast-out 0.3s ease both; }
|
|
12128
|
+
.animate-modal-in { animation: santy-modal-in 0.3s cubic-bezier(0.34,1.56,0.64,1) both; }
|
|
12129
|
+
.animate-modal-out { animation: santy-modal-out 0.25s ease both; }
|
|
12130
|
+
.animate-drawer-in-right { animation: santy-drawer-in-right 0.35s cubic-bezier(0.25,0.46,0.45,0.94) both; }
|
|
12131
|
+
.animate-drawer-out-right { animation: santy-drawer-out-right 0.3s ease both; }
|
|
12132
|
+
.animate-drawer-in-bottom { animation: santy-drawer-in-bottom 0.35s cubic-bezier(0.25,0.46,0.45,0.94) both; }
|
|
12133
|
+
.animate-dropdown-in { animation: santy-dropdown-in 0.2s cubic-bezier(0.34,1.56,0.64,1) both; transform-origin: top center; }
|
|
12134
|
+
.animate-dropdown-out { animation: santy-dropdown-out 0.15s ease both; transform-origin: top center; }
|
|
12135
|
+
.animate-tooltip-in { animation: santy-zoom-in 0.15s ease both; }
|
|
12136
|
+
.animate-badge-pop { animation: santy-badge-pop 0.4s cubic-bezier(0.34,1.56,0.64,1) both; }
|
|
12137
|
+
.animate-success-checkmark { animation: santy-checkmark 0.6s ease both; stroke-dasharray: 50; stroke-dashoffset: 50; }
|
|
12138
|
+
.animate-error-shake { animation: santy-shake-x 0.5s ease both; }
|
|
12139
|
+
|
|
12140
|
+
@keyframes santy-toast-in { from { opacity: 0; transform: translateY(100%) scale(0.9); } to { opacity: 1; transform: translateY(0) scale(1); } }
|
|
12141
|
+
@keyframes santy-toast-out { from { opacity: 1; transform: translateY(0); } to { opacity: 0; transform: translateY(20px); } }
|
|
12142
|
+
@keyframes santy-modal-in { from { opacity: 0; transform: scale(0.85); } to { opacity: 1; transform: scale(1); } }
|
|
12143
|
+
@keyframes santy-modal-out { from { opacity: 1; transform: scale(1); } to { opacity: 0; transform: scale(0.9); } }
|
|
12144
|
+
@keyframes santy-drawer-in-right { from { transform: translateX(100%); } to { transform: translateX(0); } }
|
|
12145
|
+
@keyframes santy-drawer-out-right { from { transform: translateX(0); } to { transform: translateX(100%); } }
|
|
12146
|
+
@keyframes santy-drawer-in-bottom { from { transform: translateY(100%); } to { transform: translateY(0); } }
|
|
12147
|
+
@keyframes santy-dropdown-in { from { opacity: 0; transform: scaleY(0.8); } to { opacity: 1; transform: scaleY(1); } }
|
|
12148
|
+
@keyframes santy-dropdown-out { from { opacity: 1; transform: scaleY(1); } to { opacity: 0; transform: scaleY(0.8); } }
|
|
12149
|
+
@keyframes santy-badge-pop { 0% { transform: scale(0); } 60% { transform: scale(1.15); } 100% { transform: scale(1); } }
|
|
12150
|
+
@keyframes santy-checkmark { to { stroke-dashoffset: 0; } }
|
|
12151
|
+
|
|
12152
|
+
/* ── Scroll-reveal observer snippet (embed in your HTML) ── */
|
|
12153
|
+
/* <script>
|
|
12154
|
+
new IntersectionObserver((entries) => {
|
|
12155
|
+
entries.forEach(e => {
|
|
12156
|
+
if(e.isIntersecting) {
|
|
12157
|
+
e.target.classList.add('is-visible');
|
|
12158
|
+
if(e.target.classList.contains('scroll-reveal-once'))
|
|
12159
|
+
observer.unobserve(e.target);
|
|
12160
|
+
} else {
|
|
12161
|
+
if(e.target.classList.contains('scroll-reveal-repeat'))
|
|
12162
|
+
e.target.classList.remove('is-visible');
|
|
12163
|
+
}
|
|
12164
|
+
});
|
|
12165
|
+
}, { threshold: 0.15 }).observe(...document.querySelectorAll('[class*="animate-on-scroll"],[class*="scroll-reveal"]'));
|
|
12166
|
+
</script> */
|
|
12167
|
+
|
|
11858
12168
|
|
|
11859
12169
|
/* ═══ SANTY COMPONENTS ═══ */
|
|
11860
12170
|
|
|
@@ -12448,6 +12758,226 @@
|
|
|
12448
12758
|
.dropdown-divider { height: 1px; background-color: #e5e7eb; margin: 4px 0; }
|
|
12449
12759
|
.dropdown-header { padding: 6px 12px; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; color: #9ca3af; }
|
|
12450
12760
|
|
|
12761
|
+
/* ── Component Variant System ──────────────────────────────────────────── */
|
|
12762
|
+
/* Usage: make-button style-success size-large shape-pill */
|
|
12763
|
+
|
|
12764
|
+
/* make-button */
|
|
12765
|
+
.make-button {
|
|
12766
|
+
display:inline-flex; align-items:center; justify-content:center;
|
|
12767
|
+
gap:8px; padding:9px 20px; font-size:14px; font-weight:600;
|
|
12768
|
+
border-radius:8px; border:2px solid transparent; cursor:pointer;
|
|
12769
|
+
text-decoration:none; transition:all 0.2s; line-height:1.25; white-space:nowrap;
|
|
12770
|
+
}
|
|
12771
|
+
.make-button:disabled { opacity:.5; cursor:not-allowed; }
|
|
12772
|
+
.make-button.style-primary { background:#3b82f6; color:#fff; border-color:#3b82f6; }
|
|
12773
|
+
.make-button.style-primary:hover { background:#2563eb; border-color:#2563eb; }
|
|
12774
|
+
.make-button.style-secondary { background:#6b7280; color:#fff; border-color:#6b7280; }
|
|
12775
|
+
.make-button.style-secondary:hover { background:#4b5563; border-color:#4b5563; }
|
|
12776
|
+
.make-button.style-success { background:#22c55e; color:#fff; border-color:#22c55e; }
|
|
12777
|
+
.make-button.style-success:hover { background:#16a34a; border-color:#16a34a; }
|
|
12778
|
+
.make-button.style-danger { background:#ef4444; color:#fff; border-color:#ef4444; }
|
|
12779
|
+
.make-button.style-danger:hover { background:#dc2626; border-color:#dc2626; }
|
|
12780
|
+
.make-button.style-warning { background:#f59e0b; color:#fff; border-color:#f59e0b; }
|
|
12781
|
+
.make-button.style-warning:hover { background:#d97706; border-color:#d97706; }
|
|
12782
|
+
.make-button.style-info { background:#06b6d4; color:#fff; border-color:#06b6d4; }
|
|
12783
|
+
.make-button.style-info:hover { background:#0891b2; border-color:#0891b2; }
|
|
12784
|
+
.make-button.style-outline { background:transparent; border-color:currentColor; }
|
|
12785
|
+
.make-button.style-outline:hover { background:rgba(0,0,0,.05); }
|
|
12786
|
+
.make-button.style-ghost { background:transparent; border-color:transparent; }
|
|
12787
|
+
.make-button.style-ghost:hover { background:rgba(0,0,0,.05); }
|
|
12788
|
+
.make-button.style-dark { background:#1e293b; color:#f1f5f9; border-color:#1e293b; }
|
|
12789
|
+
.make-button.style-dark:hover { background:#0f172a; border-color:#0f172a; }
|
|
12790
|
+
.make-button.style-light { background:#f3f4f6; color:#374151; border-color:#e5e7eb; }
|
|
12791
|
+
.make-button.style-light:hover { background:#e5e7eb; }
|
|
12792
|
+
.make-button.size-tiny { padding:2px 8px; font-size:11px; border-radius:4px; }
|
|
12793
|
+
.make-button.size-small { padding:5px 14px; font-size:12px; border-radius:6px; }
|
|
12794
|
+
.make-button.size-large { padding:12px 28px; font-size:16px; border-radius:10px; }
|
|
12795
|
+
.make-button.size-xl { padding:16px 36px; font-size:18px; border-radius:12px; }
|
|
12796
|
+
.make-button.size-full { width:100%; justify-content:center; }
|
|
12797
|
+
.make-button.shape-pill { border-radius:9999px; }
|
|
12798
|
+
.make-button.shape-square { border-radius:0; }
|
|
12799
|
+
.make-button.shape-rounded { border-radius:14px; }
|
|
12800
|
+
|
|
12801
|
+
/* make-card */
|
|
12802
|
+
.make-card { background:#fff; border-radius:12px; box-shadow:var(--santy-shadow); overflow:hidden; }
|
|
12803
|
+
.make-card.style-bordered { border:1px solid #e5e7eb; box-shadow:none; }
|
|
12804
|
+
.make-card.style-elevated { box-shadow:0 10px 40px -8px rgba(0,0,0,.15); }
|
|
12805
|
+
.make-card.style-flat { box-shadow:none; }
|
|
12806
|
+
.make-card.style-dark { background:#1e293b; color:#f1f5f9; }
|
|
12807
|
+
.make-card.shape-pill { border-radius:9999px; }
|
|
12808
|
+
.make-card.shape-square { border-radius:0; }
|
|
12809
|
+
.make-card.shape-rounded { border-radius:20px; }
|
|
12810
|
+
.make-card.size-small { border-radius:8px; }
|
|
12811
|
+
.make-card.size-large { border-radius:20px; }
|
|
12812
|
+
|
|
12813
|
+
/* make-badge */
|
|
12814
|
+
.make-badge { display:inline-flex; align-items:center; gap:4px; padding:3px 10px; font-size:12px; font-weight:600; border-radius:9999px; line-height:1.4; }
|
|
12815
|
+
.make-badge.style-primary { background:#dbeafe; color:#1d4ed8; }
|
|
12816
|
+
.make-badge.style-secondary { background:#f3f4f6; color:#374151; }
|
|
12817
|
+
.make-badge.style-success { background:#dcfce7; color:#15803d; }
|
|
12818
|
+
.make-badge.style-danger { background:#fee2e2; color:#b91c1c; }
|
|
12819
|
+
.make-badge.style-warning { background:#fef3c7; color:#b45309; }
|
|
12820
|
+
.make-badge.style-info { background:#cffafe; color:#0e7490; }
|
|
12821
|
+
.make-badge.style-dark { background:#1e293b; color:#f1f5f9; }
|
|
12822
|
+
.make-badge.style-outline { background:transparent; border:1.5px solid currentColor; }
|
|
12823
|
+
.make-badge.size-small { padding:1px 7px; font-size:10px; }
|
|
12824
|
+
.make-badge.size-large { padding:5px 14px; font-size:14px; }
|
|
12825
|
+
.make-badge.shape-square { border-radius:4px; }
|
|
12826
|
+
.make-badge.shape-rounded { border-radius:6px; }
|
|
12827
|
+
|
|
12828
|
+
/* make-alert */
|
|
12829
|
+
.make-alert { display:flex; align-items:flex-start; gap:12px; padding:14px 16px; border-radius:10px; font-size:14px; border:1px solid transparent; line-height:1.5; }
|
|
12830
|
+
.make-alert.style-info { background:#eff6ff; border-color:#bfdbfe; color:#1d4ed8; }
|
|
12831
|
+
.make-alert.style-success { background:#f0fdf4; border-color:#bbf7d0; color:#15803d; }
|
|
12832
|
+
.make-alert.style-warning { background:#fffbeb; border-color:#fde68a; color:#b45309; }
|
|
12833
|
+
.make-alert.style-danger { background:#fef2f2; border-color:#fecaca; color:#b91c1c; }
|
|
12834
|
+
.make-alert.style-dark { background:#1e293b; border-color:#334155; color:#f1f5f9; }
|
|
12835
|
+
.make-alert.size-small { padding:10px 12px; font-size:13px; border-radius:8px; }
|
|
12836
|
+
.make-alert.size-large { padding:20px; font-size:16px; border-radius:12px; }
|
|
12837
|
+
.make-alert.shape-square { border-radius:0; }
|
|
12838
|
+
.make-alert.shape-pill { border-radius:9999px; padding-left:24px; }
|
|
12839
|
+
|
|
12840
|
+
/* make-input */
|
|
12841
|
+
.make-input { display:block; width:100%; padding:9px 12px; font-size:14px; font-family:inherit; color:#111827; background:#fff; border:1.5px solid #d1d5db; border-radius:8px; transition:border-color .15s,box-shadow .15s; outline:none; line-height:1.5; }
|
|
12842
|
+
.make-input:focus { border-color:#3b82f6; box-shadow:0 0 0 3px rgba(59,130,246,.2); }
|
|
12843
|
+
.make-input.style-error { border-color:#ef4444; }
|
|
12844
|
+
.make-input.style-error:focus { box-shadow:0 0 0 3px rgba(239,68,68,.2); }
|
|
12845
|
+
.make-input.style-success { border-color:#22c55e; }
|
|
12846
|
+
.make-input.size-small { padding:4px 8px; font-size:12px; border-radius:6px; }
|
|
12847
|
+
.make-input.size-large { padding:12px 16px; font-size:16px; border-radius:10px; }
|
|
12848
|
+
.make-input.shape-pill { border-radius:9999px; padding-left:20px; }
|
|
12849
|
+
.make-input.shape-square { border-radius:0; }
|
|
12850
|
+
|
|
12851
|
+
/* make-avatar */
|
|
12852
|
+
.make-avatar { display:inline-flex; align-items:center; justify-content:center; width:40px; height:40px; border-radius:50%; background:#e5e7eb; color:#374151; font-weight:600; font-size:14px; overflow:hidden; flex-shrink:0; }
|
|
12853
|
+
.make-avatar img { width:100%; height:100%; object-fit:cover; }
|
|
12854
|
+
.make-avatar.size-tiny { width:24px; height:24px; font-size:10px; }
|
|
12855
|
+
.make-avatar.size-small { width:32px; height:32px; font-size:12px; }
|
|
12856
|
+
.make-avatar.size-large { width:56px; height:56px; font-size:18px; }
|
|
12857
|
+
.make-avatar.size-xl { width:80px; height:80px; font-size:24px; }
|
|
12858
|
+
.make-avatar.shape-square { border-radius:8px; }
|
|
12859
|
+
.make-avatar.shape-rounded { border-radius:12px; }
|
|
12860
|
+
.make-avatar.style-primary { background:#dbeafe; color:#1d4ed8; }
|
|
12861
|
+
.make-avatar.style-success { background:#dcfce7; color:#15803d; }
|
|
12862
|
+
.make-avatar.style-danger { background:#fee2e2; color:#b91c1c; }
|
|
12863
|
+
.make-avatar.style-warning { background:#fef3c7; color:#b45309; }
|
|
12864
|
+
.make-avatar.style-dark { background:#1e293b; color:#f1f5f9; }
|
|
12865
|
+
|
|
12866
|
+
/* make-spinner */
|
|
12867
|
+
.make-spinner { display:inline-block; width:24px; height:24px; border:3px solid #e5e7eb; border-top-color:#3b82f6; border-radius:50%; animation:santy-spin .75s linear infinite; }
|
|
12868
|
+
.make-spinner.size-tiny { width:14px; height:14px; border-width:2px; }
|
|
12869
|
+
.make-spinner.size-small { width:18px; height:18px; border-width:2px; }
|
|
12870
|
+
.make-spinner.size-large { width:40px; height:40px; border-width:4px; }
|
|
12871
|
+
.make-spinner.size-xl { width:56px; height:56px; border-width:5px; }
|
|
12872
|
+
.make-spinner.style-success { border-top-color:#22c55e; }
|
|
12873
|
+
.make-spinner.style-danger { border-top-color:#ef4444; }
|
|
12874
|
+
.make-spinner.style-warning { border-top-color:#f59e0b; }
|
|
12875
|
+
.make-spinner.style-dark { border-color:#334155; border-top-color:#f1f5f9; }
|
|
12876
|
+
|
|
12877
|
+
/* make-skeleton */
|
|
12878
|
+
.make-skeleton { background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0 50%,#f0f0f0 75%); background-size:200% 100%; animation:santy-shimmer 1.5s infinite; border-radius:6px; }
|
|
12879
|
+
.make-skeleton.shape-circle { border-radius:50%; }
|
|
12880
|
+
.make-skeleton.shape-pill { border-radius:9999px; }
|
|
12881
|
+
.make-skeleton.shape-square { border-radius:0; }
|
|
12882
|
+
.make-skeleton.size-small { height:12px; }
|
|
12883
|
+
.make-skeleton.size-large { height:24px; }
|
|
12884
|
+
|
|
12885
|
+
/* make-progress */
|
|
12886
|
+
.make-progress { width:100%; background:#e5e7eb; border-radius:9999px; overflow:hidden; }
|
|
12887
|
+
.make-progress > .bar { height:8px; background:#3b82f6; border-radius:9999px; transition:width .4s ease; }
|
|
12888
|
+
.make-progress.style-success > .bar { background:#22c55e; }
|
|
12889
|
+
.make-progress.style-danger > .bar { background:#ef4444; }
|
|
12890
|
+
.make-progress.style-warning > .bar { background:#f59e0b; }
|
|
12891
|
+
.make-progress.style-dark > .bar { background:#1e293b; }
|
|
12892
|
+
.make-progress.size-small > .bar { height:4px; }
|
|
12893
|
+
.make-progress.size-large > .bar { height:14px; }
|
|
12894
|
+
.make-progress.shape-square { border-radius:0; }
|
|
12895
|
+
.make-progress.shape-square > .bar { border-radius:0; }
|
|
12896
|
+
|
|
12897
|
+
/* make-table */
|
|
12898
|
+
.make-table { width:100%; border-collapse:collapse; font-size:14px; }
|
|
12899
|
+
.make-table th,.make-table td { padding:10px 12px; text-align:left; border-bottom:1px solid #e5e7eb; }
|
|
12900
|
+
.make-table thead tr { background:#f9fafb; }
|
|
12901
|
+
.make-table thead th { font-weight:600; color:#374151; font-size:12px; text-transform:uppercase; letter-spacing:.05em; }
|
|
12902
|
+
.make-table.style-striped tbody tr:nth-child(even) { background:#f9fafb; }
|
|
12903
|
+
.make-table.style-bordered { border:1px solid #e5e7eb; }
|
|
12904
|
+
.make-table.style-bordered th,.make-table.style-bordered td { border:1px solid #e5e7eb; }
|
|
12905
|
+
.make-table.style-hover tbody tr:hover { background:#f3f4f6; cursor:pointer; }
|
|
12906
|
+
.make-table.style-dark { background:#1e293b; color:#f1f5f9; }
|
|
12907
|
+
.make-table.style-dark th,.make-table.style-dark td { border-color:#334155; }
|
|
12908
|
+
.make-table.style-dark thead tr { background:#0f172a; }
|
|
12909
|
+
.make-table.size-small th,.make-table.size-small td { padding:6px 10px; font-size:13px; }
|
|
12910
|
+
.make-table.size-large th,.make-table.size-large td { padding:14px 16px; font-size:15px; }
|
|
12911
|
+
|
|
12912
|
+
/* make-navbar */
|
|
12913
|
+
.make-navbar { display:flex; align-items:center; justify-content:space-between; padding:12px 24px; background:#fff; border-bottom:1px solid #e5e7eb; gap:16px; }
|
|
12914
|
+
.make-navbar.style-dark { background:#1e293b; border-color:#334155; color:#f1f5f9; }
|
|
12915
|
+
.make-navbar.style-glass { background:rgba(255,255,255,.8); backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px); }
|
|
12916
|
+
.make-navbar.style-transparent { background:transparent; border-color:transparent; }
|
|
12917
|
+
.make-navbar.style-dark.style-glass { background:rgba(15,23,42,.85); }
|
|
12918
|
+
.make-navbar.size-small { padding:8px 16px; }
|
|
12919
|
+
.make-navbar.size-large { padding:20px 32px; }
|
|
12920
|
+
.make-navbar.shape-sticky { position:sticky; top:0; z-index:50; }
|
|
12921
|
+
|
|
12922
|
+
/* make-tooltip */
|
|
12923
|
+
.make-tooltip { position:relative; display:inline-block; }
|
|
12924
|
+
.make-tooltip .tip { visibility:hidden; opacity:0; position:absolute; z-index:100; background:#1f2937; color:#f9fafb; font-size:12px; padding:5px 10px; border-radius:6px; white-space:nowrap; pointer-events:none; transition:opacity .15s; line-height:1.4; }
|
|
12925
|
+
.make-tooltip:hover .tip { visibility:visible; opacity:1; }
|
|
12926
|
+
.make-tooltip.style-top .tip { bottom:calc(100% + 8px); left:50%; transform:translateX(-50%); }
|
|
12927
|
+
.make-tooltip.style-bottom .tip { top:calc(100% + 8px); left:50%; transform:translateX(-50%); }
|
|
12928
|
+
.make-tooltip.style-left .tip { right:calc(100% + 8px); top:50%; transform:translateY(-50%); }
|
|
12929
|
+
.make-tooltip.style-right .tip { left:calc(100% + 8px); top:50%; transform:translateY(-50%); }
|
|
12930
|
+
.make-tooltip.style-light .tip { background:#fff; color:#111827; box-shadow:0 4px 12px rgba(0,0,0,.15); }
|
|
12931
|
+
|
|
12932
|
+
/* make-notification */
|
|
12933
|
+
.make-notification { display:flex; align-items:flex-start; gap:12px; padding:14px 16px; border-radius:10px; font-size:14px; border:1px solid transparent; line-height:1.4; }
|
|
12934
|
+
.make-notification.style-info { background:#eff6ff; border-color:#bfdbfe; color:#1d4ed8; }
|
|
12935
|
+
.make-notification.style-success { background:#f0fdf4; border-color:#bbf7d0; color:#15803d; }
|
|
12936
|
+
.make-notification.style-warning { background:#fffbeb; border-color:#fde68a; color:#b45309; }
|
|
12937
|
+
.make-notification.style-danger { background:#fef2f2; border-color:#fecaca; color:#b91c1c; }
|
|
12938
|
+
.make-notification.style-dark { background:#1e293b; border-color:#334155; color:#f1f5f9; }
|
|
12939
|
+
.make-notification.size-small { padding:10px 12px; font-size:13px; }
|
|
12940
|
+
.make-notification.size-large { padding:20px; font-size:15px; }
|
|
12941
|
+
|
|
12942
|
+
/* make-modal */
|
|
12943
|
+
.make-modal { position:fixed; inset:0; background:rgba(0,0,0,.5); z-index:200; display:none; align-items:center; justify-content:center; padding:16px; }
|
|
12944
|
+
.make-modal:target { display:flex; }
|
|
12945
|
+
.make-modal > .box { background:#fff; border-radius:16px; box-shadow:0 25px 50px -12px rgba(0,0,0,.25); max-width:560px; width:100%; max-height:90vh; overflow-y:auto; animation:santy-zoom-in .25s ease; }
|
|
12946
|
+
.make-modal.size-small > .box { max-width:400px; }
|
|
12947
|
+
.make-modal.size-large > .box { max-width:768px; }
|
|
12948
|
+
.make-modal.size-xl > .box { max-width:1024px; }
|
|
12949
|
+
.make-modal.size-full > .box { max-width:100%; height:100vh; border-radius:0; max-height:100vh; }
|
|
12950
|
+
.make-modal.shape-square > .box { border-radius:0; }
|
|
12951
|
+
.make-modal.style-dark > .box { background:#1e293b; color:#f1f5f9; }
|
|
12952
|
+
|
|
12953
|
+
/* make-drawer */
|
|
12954
|
+
.make-drawer { position:fixed; inset:0; background:rgba(0,0,0,.5); z-index:200; display:none; }
|
|
12955
|
+
.make-drawer:target { display:block; }
|
|
12956
|
+
.make-drawer > .panel { position:fixed; top:0; bottom:0; left:0; width:300px; background:#fff; z-index:201; overflow-y:auto; box-shadow:4px 0 24px rgba(0,0,0,.12); transform:translateX(-100%); transition:transform .3s ease; }
|
|
12957
|
+
.make-drawer:target > .panel { transform:translateX(0); }
|
|
12958
|
+
.make-drawer.style-right > .panel { left:auto; right:0; transform:translateX(100%); box-shadow:-4px 0 24px rgba(0,0,0,.12); }
|
|
12959
|
+
.make-drawer:target.style-right > .panel { transform:translateX(0); }
|
|
12960
|
+
.make-drawer.style-dark > .panel { background:#1e293b; color:#f1f5f9; }
|
|
12961
|
+
.make-drawer.size-small > .panel { width:220px; }
|
|
12962
|
+
.make-drawer.size-large > .panel { width:420px; }
|
|
12963
|
+
|
|
12964
|
+
/* make-accordion */
|
|
12965
|
+
.make-accordion { border:1px solid #e5e7eb; border-radius:10px; overflow:hidden; }
|
|
12966
|
+
.make-accordion.style-flush { border:none; border-radius:0; }
|
|
12967
|
+
.make-accordion.style-dark { background:#1e293b; border-color:#334155; color:#f1f5f9; }
|
|
12968
|
+
.make-accordion.shape-square { border-radius:0; }
|
|
12969
|
+
.make-accordion.shape-rounded { border-radius:16px; }
|
|
12970
|
+
|
|
12971
|
+
/* make-dropdown */
|
|
12972
|
+
.make-dropdown { position:relative; display:inline-block; }
|
|
12973
|
+
.make-dropdown > .menu { display:none; position:absolute; top:calc(100% + 4px); left:0; min-width:180px; background:#fff; border:1px solid #e5e7eb; border-radius:10px; box-shadow:0 8px 24px rgba(0,0,0,.1); z-index:100; overflow:hidden; padding:4px; }
|
|
12974
|
+
.make-dropdown.open > .menu { display:block; }
|
|
12975
|
+
.make-dropdown.style-right > .menu { left:auto; right:0; }
|
|
12976
|
+
.make-dropdown.style-top > .menu { top:auto; bottom:calc(100% + 4px); }
|
|
12977
|
+
.make-dropdown.style-dark > .menu { background:#1e293b; border-color:#334155; }
|
|
12978
|
+
.make-dropdown.size-small > .menu { min-width:140px; font-size:13px; }
|
|
12979
|
+
.make-dropdown.size-large > .menu { min-width:240px; font-size:15px; }
|
|
12980
|
+
|
|
12451
12981
|
/* ── Dark Mode Component Variants ── */
|
|
12452
12982
|
@media (prefers-color-scheme: dark) {
|
|
12453
12983
|
.dark-auto .card { background-color: #1e293b; }
|