@@ -3043,3 +3043,283 @@ body {
30433043}
30443044
30453045/* Azek431 doc reading balance end */
3046+
3047+ /* ============================================================
3048+ * 4. CYSJ Ultimate V4 - Premium Glass Aurora Grain
3049+ * Loaded last, overrides earlier layers.
3050+ * ============================================================ */
3051+
3052+ : root {
3053+ --cysj-grain : url ("data:image/svg+xml;utf8,<svg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 200 200%27><filter id=%27n%27><feTurbulence type=%27fractalNoise%27 baseFrequency=%270.9%27 numOctaves=%272%27 stitchTiles=%27stitch%27/><feColorMatrix values=%270 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.55 0%27/></filter><rect width=%27100%25%27 height=%27100%25%27 filter=%27url(%23n)%27/></svg>" );
3054+ --cysj-glass-stroke : linear-gradient (135deg , rgba (255 , 255 , 255 , .55 ), rgba (255 , 255 , 255 , .12 ) 38% , rgba (255 , 255 , 255 , 0 ) 60% , rgba (255 , 255 , 255 , .18 ));
3055+ --cysj-aurora-1 : radial-gradient (60% 50% at 18% 12% , rgba (99 , 102 , 241 , .30 ), transparent 70% );
3056+ --cysj-aurora-2 : radial-gradient (55% 45% at 82% 24% , rgba (14 , 165 , 233 , .28 ), transparent 70% );
3057+ --cysj-aurora-3 : radial-gradient (70% 55% at 50% 92% , rgba (236 , 72 , 153 , .22 ), transparent 70% );
3058+ }
3059+
3060+ .dark {
3061+ --cysj-glass-stroke : linear-gradient (135deg , rgba (255 , 255 , 255 , .18 ), rgba (255 , 255 , 255 , .04 ) 40% , rgba (255 , 255 , 255 , 0 ) 60% , rgba (255 , 255 , 255 , .08 ));
3062+ --cysj-aurora-1 : radial-gradient (60% 50% at 18% 12% , rgba (99 , 102 , 241 , .45 ), transparent 70% );
3063+ --cysj-aurora-2 : radial-gradient (55% 45% at 82% 24% , rgba (14 , 165 , 233 , .38 ), transparent 70% );
3064+ --cysj-aurora-3 : radial-gradient (70% 55% at 50% 92% , rgba (236 , 72 , 153 , .30 ), transparent 70% );
3065+ }
3066+
3067+ /* 4.1 Global grain overlay */
3068+ html ::after {
3069+ content : "" ;
3070+ position : fixed;
3071+ inset : 0 ;
3072+ pointer-events : none;
3073+ z-index : 9999 ;
3074+ background-image : var (--cysj-grain );
3075+ background-size : 200px 200px ;
3076+ opacity : .045 ;
3077+ mix-blend-mode : overlay;
3078+ }
3079+ .dark html ::after { opacity : .08 ; mix-blend-mode : soft-light; }
3080+
3081+ /* 4.2 Aurora animated background */
3082+ body ::before {
3083+ content : "" ;
3084+ position : fixed;
3085+ inset : -10vh -10vw ;
3086+ pointer-events : none;
3087+ z-index : -1 ;
3088+ background : var (--cysj-aurora-1 ), var (--cysj-aurora-2 ), var (--cysj-aurora-3 );
3089+ filter : blur (40px ) saturate (140% );
3090+ animation : cysjAurora 22s ease-in-out infinite alternate;
3091+ }
3092+ @keyframes cysjAurora {
3093+ 0% { transform : translate3d (0 , 0 , 0 ) scale (1 ); }
3094+ 50% { transform : translate3d (2vw , -1.5vh , 0 ) scale (1.06 ); }
3095+ 100% { transform : translate3d (-1.5vw , 1vh , 0 ) scale (0.97 ); }
3096+ }
3097+
3098+ /* 4.3 Premium glass card hairline */
3099+ .VPFeature , .VPHero .VPImage , .VPDoc aside , .VPBadge {
3100+ position : relative;
3101+ }
3102+ .VPFeature ::before , .VPDoc aside ::before {
3103+ content : "" ;
3104+ position : absolute;
3105+ inset : 0 ;
3106+ border-radius : inherit;
3107+ padding : 1px ;
3108+ background : var (--cysj-glass-stroke );
3109+ -webkit-mask : linear-gradient (# 000 0 0 ) content-box, linear-gradient (# 000 0 0 );
3110+ -webkit-mask-composite : xor;
3111+ mask-composite : exclude;
3112+ pointer-events : none;
3113+ opacity : .9 ;
3114+ }
3115+
3116+ /* 4.4 Shimmer sweep on hover */
3117+ .VPFeature { overflow : hidden; isolation : isolate; }
3118+ .VPFeature ::after {
3119+ content : "" ;
3120+ position : absolute;
3121+ inset : -2px ;
3122+ background : linear-gradient (120deg , transparent 30% , rgba (255 , 255 , 255 , .28 ) 48% , rgba (255 , 255 , 255 , .55 ) 50% , rgba (255 , 255 , 255 , .28 ) 52% , transparent 70% );
3123+ transform : translateX (-120% );
3124+ transition : transform .9s cubic-bezier (.16 , .84 , .32 , 1 );
3125+ pointer-events : none;
3126+ mix-blend-mode : overlay;
3127+ }
3128+ .VPFeature : hover ::after { transform : translateX (120% ); }
3129+ .dark .VPFeature ::after { background : linear-gradient (120deg , transparent 30% , rgba (255 , 255 , 255 , .12 ) 48% , rgba (255 , 255 , 255 , .22 ) 50% , rgba (255 , 255 , 255 , .12 ) 52% , transparent 70% ); }
3130+
3131+ /* 4.5 Heading shine gradient */
3132+ .VPDoc h1 , .VPDoc h2 , .VPDoc h3 {
3133+ background : linear-gradient (120deg , # 2563eb 0% , # 0ea5e9 50% , # 6366f1 100% );
3134+ -webkit-background-clip : text;
3135+ background-clip : text;
3136+ -webkit-text-fill-color : transparent;
3137+ position : relative;
3138+ background-size : 200% 100% ;
3139+ animation : cysjHeadShine 8s linear infinite;
3140+ }
3141+ @keyframes cysjHeadShine {
3142+ 0% { background-position : 0% 50% ; }
3143+ 100% { background-position : 200% 50% ; }
3144+ }
3145+
3146+ /* 4.6 Link arrow micro-anim */
3147+ .vp-doc a : not (.VPButton ): not (.no-icon ): after ,
3148+ .VPDoc a : not (.VPButton ): not (.no-icon ): after {
3149+ content : "2192" ;
3150+ display : inline-block;
3151+ margin-left : .25em ;
3152+ font-weight : 600 ;
3153+ opacity : 0 ;
3154+ transform : translateX (-4px );
3155+ transition : opacity .25s ease, transform .25s ease;
3156+ color : var (--cysj-brand , # 2563eb );
3157+ -webkit-text-fill-color : currentColor;
3158+ background : none;
3159+ }
3160+ .vp-doc a : not (.VPButton ): not (.no-icon ): hover : after ,
3161+ .VPDoc a : not (.VPButton ): not (.no-icon ): hover : after { opacity : 1 ; transform : translateX (0 ); }
3162+
3163+ /* 4.7 Inline code glass pill */
3164+ .vp-doc : not (pre ) > code , .VPDoc : not (pre ) > code {
3165+ background : linear-gradient (180deg , rgba (99 , 102 , 241 , .10 ), rgba (14 , 165 , 233 , .08 )) !important ;
3166+ border : 1px solid rgba (99 , 102 , 241 , .18 );
3167+ border-radius : 6px ;
3168+ padding : 0 .4em ;
3169+ box-shadow : inset 0 1px 0 rgba (255 , 255 , 255 , .4 ), 0 1px 0 rgba (15 , 23 , 42 , .04 );
3170+ transition : transform .15s ease, box-shadow .2s ease;
3171+ }
3172+ .vp-doc : not (pre ) > code : hover , .VPDoc : not (pre ) > code : hover { transform : translateY (-1px ); box-shadow : inset 0 1px 0 rgba (255 , 255 , 255 , .5 ), 0 4px 10px -4px rgba (99 , 102 , 241 , .35 ); }
3173+ .dark .vp-doc : not (pre ) > code , .dark .VPDoc : not (pre ) > code { background : linear-gradient (180deg , rgba (99 , 102 , 241 , .18 ), rgba (14 , 165 , 233 , .12 )) !important ; border-color : rgba (99 , 102 , 241 , .30 ); box-shadow : inset 0 1px 0 rgba (255 , 255 , 255 , .06 ); }
3174+
3175+ /* 4.8 Selection tint */
3176+ ::selection { background : linear-gradient (120deg , rgba (99 , 102 , 241 , .35 ), rgba (14 , 165 , 233 , .30 )); color : # fff ; text-shadow : 0 1px 0 rgba (0 , 0 , 0 , .2 ); }
3177+ ::-moz-selection { background : rgba (99 , 102 , 241 , .35 ); color : # fff ; }
3178+
3179+ /* 4.9 Scrollbar gradient thumb */
3180+ ::-webkit-scrollbar { width : 10px ; height : 10px ; }
3181+ ::-webkit-scrollbar-track { background : transparent; }
3182+ ::-webkit-scrollbar-thumb {
3183+ background : linear-gradient (180deg , rgba (99 , 102 , 241 , .55 ), rgba (14 , 165 , 233 , .55 ));
3184+ border-radius : 999px ;
3185+ border : 2px solid transparent;
3186+ background-clip : padding-box;
3187+ }
3188+ ::-webkit-scrollbar-thumb : hover { background : linear-gradient (180deg , rgba (99 , 102 , 241 , .8 ), rgba (14 , 165 , 233 , .8 )); background-clip : padding-box; }
3189+
3190+ /* 4.10 Sidebar active gradient bar */
3191+ .VPSidebarItem .is-active > .item .link ,
3192+ .VPSidebarItem .is-active > .item .link : hover {
3193+ background : linear-gradient (90deg , rgba (99 , 102 , 241 , .18 ), rgba (14 , 165 , 233 , .10 ) 60% , transparent) !important ;
3194+ color : var (--cysj-brand , # 2563eb ) !important ;
3195+ font-weight : 600 ;
3196+ box-shadow : inset 3px 0 0 var (--cysj-brand , # 2563eb );
3197+ }
3198+
3199+ /* 4.11 Hero name gradient */
3200+ .VPHero .name , .VPHero .text .name {
3201+ background : linear-gradient (120deg , # 2563eb 0% , # 6366f1 30% , # 0ea5e9 55% , # ec4899 90% );
3202+ -webkit-background-clip : text;
3203+ background-clip : text;
3204+ -webkit-text-fill-color : transparent;
3205+ background-size : 250% 100% ;
3206+ animation : cysjHeroName 10s ease-in-out infinite;
3207+ filter : drop-shadow (0 6px 20px rgba (99 , 102 , 241 , .25 ));
3208+ }
3209+ @keyframes cysjHeroName {
3210+ 0% , 100% { background-position : 0% 50% ; }
3211+ 50% { background-position : 100% 50% ; }
3212+ }
3213+
3214+ /* 4.12 Hero crystal float */
3215+ .VPHero .VPImage , .VPHomeHero .image , .VPHero .container .image , .VPHero img .image {
3216+ animation : cysjFloat 6s ease-in-out infinite;
3217+ }
3218+ @keyframes cysjFloat {
3219+ 0% , 100% { transform : translateY (0 ) rotate (0 ); }
3220+ 50% { transform : translateY (-10px ) rotate (0.6deg ); }
3221+ }
3222+
3223+ /* 4.13 Tag chips */
3224+ .VPBadge , .vp-doc .badge , .VPHero .VPBadge {
3225+ background : linear-gradient (180deg , rgba (255 , 255 , 255 , .6 ), rgba (255 , 255 , 255 , .2 )) !important ;
3226+ border : 1px solid rgba (99 , 102 , 241 , .25 ) !important ;
3227+ backdrop-filter : blur (6px ) saturate (160% );
3228+ box-shadow : 0 2px 6px rgba (15 , 23 , 42 , .06 ), inset 0 1px 0 rgba (255 , 255 , 255 , .5 );
3229+ color : var (--cysj-brand , # 2563eb ) !important ;
3230+ }
3231+ .dark .VPBadge , .dark .vp-doc .badge { background : linear-gradient (180deg , rgba (99 , 102 , 241 , .18 ), rgba (14 , 165 , 233 , .10 )) !important ; border-color : rgba (99 , 102 , 241 , .40 ) !important ; }
3232+
3233+ /* 4.14 Tables premium header */
3234+ .vp-doc table thead th , .VPDoc table thead th {
3235+ background : linear-gradient (180deg , rgba (99 , 102 , 241 , .10 ), rgba (14 , 165 , 233 , .05 )) !important ;
3236+ color : var (--cysj-brand , # 2563eb ) !important ;
3237+ font-weight : 700 ;
3238+ letter-spacing : .02em ;
3239+ border-bottom : 2px solid rgba (99 , 102 , 241 , .25 ) !important ;
3240+ }
3241+
3242+ /* 4.15 Blockquote gradient bar */
3243+ .vp-doc blockquote , .VPDoc blockquote {
3244+ position : relative;
3245+ background :
3246+ linear-gradient (180deg , rgba (99 , 102 , 241 , .06 ), rgba (14 , 165 , 233 , .04 )),
3247+ var (--cysj-surface , # f8fafc ) !important ;
3248+ border-left : 4px solid transparent;
3249+ border-image : linear-gradient (180deg , # 6366f1, # 0ea5e9 ) 1 ;
3250+ box-shadow : 0 4px 18px -8px rgba (99 , 102 , 241 , .35 );
3251+ }
3252+
3253+ /* 4.16 Custom containers */
3254+ .vp-doc .custom-block , .VPDoc .custom-block {
3255+ background : linear-gradient (180deg , rgba (255 , 255 , 255 , .7 ), rgba (255 , 255 , 255 , .4 )) !important ;
3256+ backdrop-filter : blur (8px ) saturate (160% );
3257+ border : 1px solid rgba (99 , 102 , 241 , .18 );
3258+ box-shadow : 0 6px 24px -10px rgba (15 , 23 , 42 , .10 ), inset 0 1px 0 rgba (255 , 255 , 255 , .6 );
3259+ }
3260+ .dark .vp-doc .custom-block , .dark .VPDoc .custom-block { background : linear-gradient (180deg , rgba (30 , 41 , 59 , .55 ), rgba (15 , 23 , 42 , .45 )) !important ; border-color : rgba (99 , 102 , 241 , .30 ); }
3261+
3262+ /* 4.17 Footer glass */
3263+ .VPFooter {
3264+ position : relative;
3265+ background : linear-gradient (180deg , rgba (255 , 255 , 255 , .55 ), rgba (255 , 255 , 255 , .35 )) !important ;
3266+ backdrop-filter : blur (10px ) saturate (160% );
3267+ border-top : 1px solid rgba (99 , 102 , 241 , .18 );
3268+ box-shadow : 0 -8px 24px -16px rgba (15 , 23 , 42 , .18 ), inset 0 1px 0 rgba (255 , 255 , 255 , .5 );
3269+ }
3270+ .VPFooter ::before {
3271+ content : "" ;
3272+ position : absolute; top : 0 ; left : 0 ; right : 0 ; height : 1px ;
3273+ background : linear-gradient (90deg , transparent, rgba (99 , 102 , 241 , .6 ), rgba (14 , 165 , 233 , .6 ), transparent);
3274+ }
3275+ .dark .VPFooter { background : linear-gradient (180deg , rgba (15 , 23 , 42 , .6 ), rgba (15 , 23 , 42 , .4 )) !important ; border-top-color : rgba (99 , 102 , 241 , .3 ); }
3276+
3277+ /* 4.18 Nav glass */
3278+ .VPNavBar {
3279+ background : linear-gradient (180deg , rgba (255 , 255 , 255 , .75 ), rgba (255 , 255 , 255 , .55 )) !important ;
3280+ backdrop-filter : saturate (180% ) blur (18px ) !important ;
3281+ -webkit-backdrop-filter : saturate (180% ) blur (18px ) !important ;
3282+ border-bottom : 1px solid rgba (99 , 102 , 241 , .18 ) !important ;
3283+ box-shadow : 0 6px 24px -16px rgba (15 , 23 , 42 , .22 ), inset 0 -1px 0 rgba (99 , 102 , 241 , .18 );
3284+ }
3285+ .dark .VPNavBar { background : linear-gradient (180deg , rgba (15 , 23 , 42 , .7 ), rgba (15 , 23 , 42 , .5 )) !important ; border-bottom-color : rgba (99 , 102 , 241 , .3 ) !important ; }
3286+
3287+ /* 4.19 Pager glass */
3288+ .pager-link , .VPPager a {
3289+ background : linear-gradient (180deg , rgba (255 , 255 , 255 , .65 ), rgba (255 , 255 , 255 , .35 )) !important ;
3290+ backdrop-filter : blur (8px ) saturate (160% );
3291+ border : 1px solid rgba (99 , 102 , 241 , .18 ) !important ;
3292+ box-shadow : 0 4px 14px -8px rgba (15 , 23 , 42 , .18 ), inset 0 1px 0 rgba (255 , 255 , 255 , .55 );
3293+ position : relative;
3294+ overflow : hidden;
3295+ }
3296+ .dark .pager-link , .dark .VPPager a { background : linear-gradient (180deg , rgba (30 , 41 , 59 , .55 ), rgba (15 , 23 , 42 , .45 )) !important ; border-color : rgba (99 , 102 , 241 , .30 ) !important ; }
3297+
3298+ /* 4.20 Outline active */
3299+ .outline-link .active , .VPDocOutline .outline-link .active {
3300+ color : var (--cysj-brand , # 2563eb ) !important ;
3301+ font-weight : 600 ;
3302+ background : linear-gradient (90deg , rgba (99 , 102 , 241 , .16 ), transparent) !important ;
3303+ box-shadow : inset 2px 0 0 var (--cysj-brand , # 2563eb ) !important ;
3304+ }
3305+
3306+ /* 4.21 Brand button shine */
3307+ .VPButton .brand , button .VPButton .brand {
3308+ background-image : linear-gradient (135deg , # 6366f1, # 2563eb 50% , # 0ea5e9 ) !important ;
3309+ background-size : 200% 200% !important ;
3310+ box-shadow : 0 10px 24px -10px rgba (99 , 102 , 241 , .55 ), inset 0 1px 0 rgba (255 , 255 , 255 , .4 ) !important ;
3311+ animation : cysjBtnShine 5s ease-in-out infinite;
3312+ border : 1px solid rgba (255 , 255 , 255 , .25 ) !important ;
3313+ }
3314+ .VPButton .brand : hover { transform : translateY (-1px ); box-shadow : 0 14px 30px -10px rgba (99 , 102 , 241 , .7 ), inset 0 1px 0 rgba (255 , 255 , 255 , .5 ) !important ; }
3315+ @keyframes cysjBtnShine {
3316+ 0% , 100% { background-position : 0% 50% ; }
3317+ 50% { background-position : 100% 50% ; }
3318+ }
3319+
3320+ /* 4.22 Reduced motion */
3321+ @media (prefers-reduced-motion : reduce) {
3322+ body ::before , .VPFeature ::after , .VPHero .VPImage , .VPHomeHero .image , .VPHero img .image ,
3323+ .VPHero .name , .VPHero .text .name , .VPDoc h1 , .VPDoc h2 , .VPDoc h3 , .VPButton .brand { animation : none !important ; }
3324+ html ::after { display : none; }
3325+ }
0 commit comments