@@ -31,23 +31,43 @@ const FloatingRunes = () => {
3131 const runes = [ 'ᚠ' , 'ᚢ' , 'ᚦ' , 'ᚨ' , 'ᚱ' , 'ᚲ' , 'ᚷ' , 'ᚹ' , 'ᚺ' , 'ᚾ' , 'ᛁ' , 'ᛃ' , 'ᛈ' , 'ᛇ' , 'ᛉ' , 'ᛊ' , 'ᛏ' , 'ᛒ' , 'ᛖ' , 'ᛗ' , 'ᛚ' , 'ᛜ' , 'ᛞ' , 'ᛟ' ] ;
3232 return (
3333 < div className = "fixed inset-0 pointer-events-none z-0 overflow-hidden" >
34- { [ ...Array ( 15 ) ] . map ( ( _ , i ) => (
35- < div
34+ { [ ...Array ( 20 ) ] . map ( ( _ , i ) => (
35+ < motion . div
3636 key = { i }
3737 className = "dnd-floating-rune text-4xl"
38+ initial = { { opacity : 0.02 } }
39+ whileHover = { { opacity : 0.1 , scale : 1.5 , filter : 'blur(0px)' } }
3840 style = { {
3941 left : `${ Math . random ( ) * 100 } %` ,
4042 top : `${ Math . random ( ) * 100 } %` ,
4143 transform : `rotate(${ Math . random ( ) * 360 } deg)` ,
4244 } }
4345 >
4446 { runes [ Math . floor ( Math . random ( ) * runes . length ) ] }
45- </ div >
47+ </ motion . div >
4648 ) ) }
4749 </ div >
4850 ) ;
4951} ;
5052
53+ const ViewportFrame = ( ) => (
54+ < >
55+ < div className = "dnd-viewport-frame" />
56+ < div className = "fixed top-0 left-0 w-24 h-24 z-[210] pointer-events-none" >
57+ < div className = "absolute top-4 left-4 w-12 h-12 border-t-4 border-l-4 border-dnd-gold rounded-tl-lg" />
58+ </ div >
59+ < div className = "fixed top-0 right-0 w-24 h-24 z-[210] pointer-events-none" >
60+ < div className = "absolute top-4 right-4 w-12 h-12 border-t-4 border-r-4 border-dnd-gold rounded-tr-lg" />
61+ </ div >
62+ < div className = "fixed bottom-0 left-0 w-24 h-24 z-[210] pointer-events-none" >
63+ < div className = "absolute bottom-4 left-4 w-12 h-12 border-b-4 border-l-4 border-dnd-gold rounded-bl-lg" />
64+ </ div >
65+ < div className = "fixed bottom-0 right-0 w-24 h-24 z-[210] pointer-events-none" >
66+ < div className = "absolute bottom-4 right-4 w-12 h-12 border-b-4 border-r-4 border-dnd-gold rounded-br-lg" />
67+ </ div >
68+ </ >
69+ ) ;
70+
5171const FireParticles = ( ) => {
5272 const colors = [
5373 'radial-gradient(circle, #ff4500 0%, #ff8c00 70%, transparent 100%)' , // Red-Orange
@@ -149,6 +169,7 @@ const DndLayout = ({ children }) => {
149169
150170 return (
151171 < div className = "dnd-theme-root min-h-screen flex flex-col relative overflow-x-hidden" >
172+ < ViewportFrame />
152173 < Torchlight />
153174 < DiceRoller />
154175 < FireParticles />
0 commit comments