@@ -661,114 +661,54 @@ function cancelTool() {
661661 display : flex ;
662662 align-items : center ;
663663 gap : 12px ;
664- padding : 12 px 28 px ;
665- border-radius : 2 px ;
664+ padding : 14 px 32 px ;
665+ border-radius : 12 px ;
666666 font-family : ' Inter' , ' Roboto' , sans-serif ;
667667 font-size : 14px ;
668668 font-weight : 600 ;
669- letter-spacing : 0.6 px ;
669+ letter-spacing : 0.4 px ;
670670 pointer-events : none ;
671671 user-select : none ;
672672 white-space : nowrap ;
673673 overflow : hidden ;
674-
675- /* Holographic glass base */
676- backdrop-filter : blur (14px ) saturate (1.4 );
677- -webkit-backdrop-filter : blur (14px ) saturate (1.4 );
678-
679- /* Persistent scanline texture */
680- background-image : repeating-linear-gradient (
681- 0deg ,
682- transparent 0px ,
683- transparent 2px ,
684- rgba (0 , 0 , 0 , 0.06 ) 2px ,
685- rgba (0 , 0 , 0 , 0.06 ) 4px
686- );
687- background-size : 100% 4px ;
688- animation : holo-scanline-drift 4s linear infinite ;
674+ backdrop-filter : blur (16px ) saturate (1.3 );
675+ -webkit-backdrop-filter : blur (16px ) saturate (1.3 );
689676}
690677
691- /* ── Scan beam — bright line that sweeps top→bottom on entry ── */
678+ /* ── Subtle glow shimmer on entry ── */
692679.nge-smo-result-flash ::before {
693- content : ' ' ;
694- position : absolute ;
695- left : 0 ;
696- right : 0 ;
697- height : 2px ;
698- top : 0 ;
699- background : linear-gradient (
700- 90deg ,
701- transparent 0% ,
702- rgba (255 , 255 , 255 , 0.1 ) 10% ,
703- currentColor 35% ,
704- rgba (255 , 255 , 255 , 0.95 ) 50% ,
705- currentColor 65% ,
706- rgba (255 , 255 , 255 , 0.1 ) 90% ,
707- transparent 100%
708- );
709- filter : blur (0.5px );
710- box-shadow : 0 0 8px currentColor , 0 0 16px currentColor ;
711- animation : holo-scanbeam 0.6s cubic-bezier (0.25 , 0.46 , 0.45 , 0.94 ) forwards ;
712- animation-delay : 0.15s ;
713- opacity : 0 ;
714- }
715-
716- /* ── Holographic edge frame — breathing border glow ── */
717- .nge-smo-result-flash ::after {
718680 content : ' ' ;
719681 position : absolute ;
720682 inset : 0 ;
721- border-radius : 2px ;
722- border : 1px solid transparent ;
723- background : linear-gradient (
724- 135deg ,
725- rgba (255 , 255 , 255 , 0.25 ) 0% ,
726- transparent 30% ,
727- transparent 70% ,
728- rgba (255 , 255 , 255 , 0.12 ) 100%
729- ) border-box ;
730- -webkit-mask : linear-gradient (#fff 0 0 ) padding-box , linear-gradient (#fff 0 0 );
731- -webkit-mask-composite : xor;
732- mask-composite : exclude ;
733- animation : holo-edge-breathe 2.5s ease-in-out infinite ;
734- animation-delay : 0.8s ;
735- opacity : 0 ;
683+ border-radius : 12px ;
684+ background : linear-gradient (135deg , rgba (255 ,255 ,255 ,0.08 ) 0% , transparent 50% );
685+ pointer-events : none ;
736686}
687+ .nge-smo-result-flash ::after { display : none ; }
737688
738689/* ── SUCCESS ── */
739690.nge-smo-result-flash.success {
740- background-color : rgba (6 , 32 , 20 , 0.88 );
741- border : 1px solid rgba (0 , 255 , 140 , 0.35 );
691+ background-color : rgba (8 , 30 , 22 , 0.92 );
692+ border : 1px solid rgba (0 , 220 , 120 , 0.25 );
742693 color : #a0ffd4 ;
743- box-shadow :
744- 0 0 30px rgba (0 , 220 , 120 , 0.25 ),
745- 0 0 60px rgba (0 , 220 , 120 , 0.08 ),
746- inset 0 1px 0 rgba (0 , 255 , 140 , 0.15 ),
747- inset 0 0 30px rgba (0 , 220 , 120 , 0.04 );
748- text-shadow :
749- 0 0 8px rgba (0 , 220 , 120 , 0.7 ),
750- 0 0 20px rgba (0 , 220 , 120 , 0.25 );
694+ box-shadow : 0 8px 32px rgba (0 , 0 , 0 , 0.3 ), 0 0 20px rgba (0 , 220 , 120 , 0.15 );
695+ text-shadow : 0 0 6px rgba (0 , 220 , 120 , 0.4 );
696+ animation : smo-result-glow-green 2s ease-in-out infinite ;
751697}
752698
753699/* ── ERROR ── */
754700.nge-smo-result-flash.error {
755- background-color : rgba (40 , 6 , 6 , 0.88 );
756- border : 1px solid rgba (255 , 80 , 80 , 0.35 );
757- color : #ffb0b0 ;
758- box-shadow :
759- 0 0 30px rgba (255 , 60 , 60 , 0.25 ),
760- 0 0 60px rgba (255 , 60 , 60 , 0.08 ),
761- inset 0 1px 0 rgba (255 , 80 , 80 , 0.15 ),
762- inset 0 0 30px rgba (255 , 60 , 60 , 0.04 );
763- text-shadow :
764- 0 0 8px rgba (255 , 60 , 60 , 0.7 ),
765- 0 0 20px rgba (255 , 60 , 60 , 0.25 );
701+ background-color : rgba (35 , 10 , 10 , 0.92 );
702+ border : 1px solid rgba (255 , 100 , 100 , 0.2 );
703+ color : #ffb8b8 ;
704+ box-shadow : 0 8px 32px rgba (0 , 0 , 0 , 0.3 ), 0 0 20px rgba (255 , 80 , 80 , 0.1 );
705+ text-shadow : 0 0 6px rgba (255 , 80 , 80 , 0.3 );
706+ animation : smo-result-shake 0.4s ease-out ;
766707}
767708
768709.nge-smo-result-icon {
769710 font-size : 20px ;
770- filter : drop-shadow (0 0 6px currentColor );
771- animation : holo-icon-stabilize 0.7s ease-out forwards ;
711+ filter : drop-shadow (0 0 4px currentColor );
772712}
773713
774714.nge-smo-result-text {
@@ -783,166 +723,68 @@ function cancelTool() {
783723 font-style : italic ;
784724 margin-left : 6px ;
785725 opacity : 0 ;
786- animation : holo -retry-fade-in 0.4s ease-out 1.2 s forwards ;
726+ animation : smo -retry-fade-in 0.4s ease-out 0.8 s forwards ;
787727}
788728
789- /* ═══ HOLOGRAPHIC KEYFRAMES ════ ═══════════════════════════════ */
729+ /* ═══ SMOOTH RESULT KEYFRAMES ═══════════════════════════════ */
790730
791- /* Entry: beam line expands outward, content resolves through glitch */
792- @keyframes holo-materialize {
731+ /* Entry: gentle slide up + fade in */
732+ @keyframes smo-result-enter {
793733 0% {
794- clip-path : inset (48% 35% 48% 35% );
795734 opacity : 0 ;
796- filter : brightness (4 ) saturate (0 ) blur (2px );
797- transform : translateX (-50% );
798- }
799- 8% {
800- opacity : 1 ;
801- filter : brightness (3 ) saturate (0 ) blur (1px );
802- }
803- /* Beam line visible — thin horizontal slit */
804- 16% {
805- clip-path : inset (46% 8% 46% 8% );
806- filter : brightness (2.5 ) saturate (0 ) blur (0.5px );
735+ transform : translateX (-50% ) translateY (16px ) scale (0.96 );
807736 }
808- /* Expanding — scanlines visible through the opening */
809- 30% {
810- clip-path : inset (30% 2% 30% 2% );
811- filter : brightness (1.6 ) saturate (0.4 ) blur (0px );
812- transform : translateX (-50% );
813- }
814- 48% {
815- clip-path : inset (12% 0% 12% 0% );
816- filter : brightness (1.2 ) saturate (0.7 );
817- }
818- /* Content nearly full — first glitch hit */
819737 60% {
820- clip-path : inset (2% 0% 2% 0% );
821- filter : brightness (1 ) saturate (1 );
822- transform : translateX (-50% );
823- }
824- /* Chromatic glitch sequence */
825- 66% {
826- clip-path : inset (0 );
827- transform : translateX (calc (-50% + 3px ));
828- filter : brightness (1.4 ) hue-rotate (-10deg );
829- text-shadow : -3px 0 rgba (255 , 0 , 80 , 0.7 ), 3px 0 rgba (0 , 200 , 255 , 0.7 );
830- }
831- 72% {
832- transform : translateX (calc (-50% - 4px ));
833- filter : brightness (0.8 ) hue-rotate (8deg );
834- text-shadow : 2px 0 rgba (255 , 0 , 80 , 0.5 ), -2px 0 rgba (0 , 200 , 255 , 0.5 );
835- }
836- 78% {
837- transform : translateX (calc (-50% + 1px ));
838- filter : brightness (1.3 ) hue-rotate (-3deg );
839- text-shadow : -1px 0 rgba (255 , 0 , 80 , 0.3 ), 1px 0 rgba (0 , 200 , 255 , 0.3 );
840- }
841- /* Stabilize */
842- 88% {
843- filter : brightness (1.05 ) hue-rotate (0deg );
844- text-shadow : none ;
738+ opacity : 1 ;
739+ transform : translateX (-50% ) translateY (-2px ) scale (1.01 );
845740 }
846741 100% {
847- clip-path : inset (0 );
848742 opacity : 1 ;
849- filter : brightness (1 ) saturate (1 ) blur (0px );
850- transform : translateX (-50% );
743+ transform : translateX (-50% ) translateY (0 ) scale (1 );
851744 }
852745}
853746
854- /* Scan beam sweeps top → bottom during materialization */
855- @keyframes holo-scanbeam {
856- 0% { top : 0% ; opacity : 0.9 ; height : 2px ; }
857- 40% { opacity : 1 ; height : 3px ; }
858- 100% { top : 100% ; opacity : 0 ; height : 1px ; }
859- }
860-
861- /* Scanline texture drifts upward slowly (CRT / hologram feel) */
862- @keyframes holo-scanline-drift {
863- 0% { background-position : 0 0 ; }
864- 100% { background-position : 0 -40px ; }
865- }
866-
867- /* Edge glow pulses after materialization */
868- @keyframes holo-edge-breathe {
869- 0% , 100% { opacity : 0.2 ; }
870- 50% { opacity : 0.6 ; }
871- }
872-
873- /* Icon resolves from static */
874- @keyframes holo-icon-stabilize {
875- 0% { opacity : 0 ; transform : scale (1.8 ); filter : blur (4px ) drop-shadow (0 0 12px currentColor ); }
876- 40% { opacity : 1 ; transform : scale (0.9 ); filter : blur (0px ) drop-shadow (0 0 8px currentColor ); }
877- 60% { transform : scale (1.1 ); }
878- 80% { transform : scale (0.97 ); }
879- 100% { transform : scale (1 ); filter : drop-shadow (0 0 6px currentColor ); }
880- }
881-
882- /* Retry text materializes late */
883- @keyframes holo-retry-fade-in {
884- 0% { opacity : 0 ; transform : translateX (-4px ); filter : blur (2px ); }
885- 60% { opacity : 0.8 ; filter : blur (0 ); }
886- 100% { opacity : 0.65 ; transform : translateX (0 ); }
887- }
888-
889- /* Exit: destabilize → chromatic split → collapse to beam → vanish */
890- @keyframes holo-destabilize {
747+ /* Exit: gentle fade down */
748+ @keyframes smo-result-exit {
891749 0% {
892- clip-path : inset (0 );
893750 opacity : 1 ;
894- filter : brightness (1 ) saturate (1 );
895- transform : translateX (-50% );
896- }
897- /* Flicker unstable */
898- 15% {
899- opacity : 0.7 ;
900- filter : brightness (1.5 ) saturate (0.6 );
901- transform : translateX (calc (-50% - 2px ));
902- text-shadow : -2px 0 rgba (255 , 0 , 80 , 0.6 ), 2px 0 rgba (0 , 200 , 255 , 0.6 );
903- }
904- 25% {
905- opacity : 1 ;
906- filter : brightness (0.8 );
907- transform : translateX (calc (-50% + 3px ));
908- }
909- 35% {
910- filter : brightness (1.8 ) saturate (0.3 );
911- transform : translateX (calc (-50% - 1px ));
912- text-shadow : -3px 0 rgba (255 , 0 , 80 , 0.4 ), 3px 0 rgba (0 , 200 , 255 , 0.4 );
913- }
914- /* Begin collapse */
915- 50% {
916- clip-path : inset (15% 3% 15% 3% );
917- filter : brightness (2 ) saturate (0.1 );
918- text-shadow : none ;
919- transform : translateX (-50% );
920- }
921- 70% {
922- clip-path : inset (35% 10% 35% 10% );
923- filter : brightness (2.5 ) saturate (0 ) blur (0.5px );
924- opacity : 0.7 ;
925- }
926- 85% {
927- clip-path : inset (46% 25% 46% 25% );
928- filter : brightness (3 ) saturate (0 ) blur (1px );
929- opacity : 0.4 ;
751+ transform : translateX (-50% ) translateY (0 ) scale (1 );
930752 }
931753 100% {
932- clip-path : inset (50% 45% 50% 45% );
933- filter : brightness (4 ) saturate (0 ) blur (2px );
934754 opacity : 0 ;
935- transform : translateX (-50% );
755+ transform : translateX (-50% ) translateY ( 10 px ) scale ( 0.97 ) ;
936756 }
937757}
938758
759+ /* Success: subtle breathing glow */
760+ @keyframes smo-result-glow-green {
761+ 0% , 100% { box-shadow : 0 8px 32px rgba (0 ,0 ,0 ,0.3 ), 0 0 20px rgba (0 ,220 ,120 ,0.12 ); }
762+ 50% { box-shadow : 0 8px 32px rgba (0 ,0 ,0 ,0.3 ), 0 0 28px rgba (0 ,220 ,120 ,0.2 ); }
763+ }
764+
765+ /* Error: satisfying micro-shake then settle */
766+ @keyframes smo-result-shake {
767+ 0% { transform : translateX (-50% ); }
768+ 20% { transform : translateX (calc (-50% + 6px )); }
769+ 40% { transform : translateX (calc (-50% - 4px )); }
770+ 60% { transform : translateX (calc (-50% + 2px )); }
771+ 80% { transform : translateX (calc (-50% - 1px )); }
772+ 100% { transform : translateX (-50% ); }
773+ }
774+
775+ /* Retry text fades in gently */
776+ @keyframes smo-retry-fade-in {
777+ 0% { opacity : 0 ; }
778+ 100% { opacity : 0.6 ; }
779+ }
780+
939781/* ═══ VUE TRANSITION HOOKS ═══════════════════════════════════ */
940782
941783.flash-pop-enter-active {
942- animation : holo-materialize 0.75 s cubic-bezier (0.16 , 1 , 0.3 , 1 ) forwards ;
784+ animation : smo-result-enter 0.45 s cubic-bezier (0.16 , 1 , 0.3 , 1 ) forwards ;
943785}
944786.flash-pop-leave-active {
945- animation : holo-destabilize 0.55 s ease-in forwards ;
787+ animation : smo-result-exit 0.35 s ease-in forwards ;
946788}
947789
948790/* ═══ MAIN BAR TRANSITION — horizontal wipe materialization ══ */
0 commit comments