Spaces:
Runtime error
Runtime error
/* Contextual Hints System - With Quantum Styling | |
-------------------------------------------------- */ | |
:root { | |
--hint-bg-color: rgba(30, 30, 35, 0.95); | |
--hint-border-color: rgba(111, 66, 193, 0.7); | |
--hint-text-color: rgba(255, 255, 255, 0.9); | |
--hint-shadow-color: rgba(218, 75, 134, 0.3); | |
--hint-icon-color: rgba(13, 202, 240, 0.9); | |
--hint-glow-color: rgba(111, 66, 193, 0.5); | |
--hint-btn-color: rgba(13, 202, 240, 0.8); | |
--hint-transition-time: 0.3s; | |
} | |
/* Main Hint Container */ | |
.contextual-hint { | |
position: absolute; | |
width: auto; | |
max-width: 300px; | |
min-width: 230px; | |
padding: 15px; | |
background: var(--hint-bg-color); | |
color: var(--hint-text-color); | |
border-radius: 8px; | |
border: 1px solid var(--hint-border-color); | |
box-shadow: 0 3px 15px var(--hint-shadow-color), | |
0 0 8px var(--hint-glow-color); | |
z-index: 9999; | |
opacity: 0; | |
transform: translateY(15px) scale(0.95); | |
transition: opacity var(--hint-transition-time) ease, | |
transform var(--hint-transition-time) ease; | |
backdrop-filter: blur(8px); | |
pointer-events: none; | |
} | |
/* Hint that is currently shown */ | |
.contextual-hint.active { | |
opacity: 1; | |
transform: translateY(0) scale(1); | |
pointer-events: auto; | |
} | |
/* Hint Title */ | |
.contextual-hint-title { | |
display: flex; | |
align-items: center; | |
margin-bottom: 10px; | |
padding-bottom: 8px; | |
border-bottom: 1px solid rgba(255, 255, 255, 0.1); | |
} | |
.contextual-hint-title i { | |
color: var(--hint-icon-color); | |
margin-right: 8px; | |
font-size: 1.1rem; | |
} | |
.contextual-hint-title h5 { | |
margin: 0; | |
font-size: 1rem; | |
font-weight: 600; | |
color: var(--hint-text-color); | |
} | |
/* Hint Content */ | |
.contextual-hint-content { | |
font-size: 0.95rem; | |
line-height: 1.4; | |
margin-bottom: 15px; | |
} | |
/* Hint Actions */ | |
.contextual-hint-actions { | |
display: flex; | |
justify-content: space-between; | |
align-items: center; | |
} | |
.hint-button { | |
background: transparent; | |
color: var(--hint-btn-color); | |
border: 1px solid var(--hint-btn-color); | |
padding: 5px 10px; | |
border-radius: 4px; | |
font-size: 0.8rem; | |
cursor: pointer; | |
transition: all var(--hint-transition-time) ease; | |
} | |
.hint-button:hover { | |
background: var(--hint-btn-color); | |
color: #000; | |
} | |
.hint-button-primary { | |
background: var(--hint-btn-color); | |
color: #000; | |
} | |
.hint-button-primary:hover { | |
background: transparent; | |
color: var(--hint-btn-color); | |
} | |
.hint-dont-show { | |
font-size: 0.8rem; | |
color: rgba(255, 255, 255, 0.5); | |
cursor: pointer; | |
transition: color var(--hint-transition-time) ease; | |
} | |
.hint-dont-show:hover { | |
color: var(--hint-text-color); | |
} | |
/* Hint Arrow */ | |
.contextual-hint::before { | |
content: ''; | |
position: absolute; | |
width: 10px; | |
height: 10px; | |
background: var(--hint-bg-color); | |
border: 1px solid var(--hint-border-color); | |
transform: rotate(45deg); | |
} | |
/* Position variations */ | |
.contextual-hint.position-top::before { | |
bottom: -6px; | |
border-top: none; | |
border-left: none; | |
} | |
.contextual-hint.position-bottom::before { | |
top: -6px; | |
border-bottom: none; | |
border-right: none; | |
} | |
.contextual-hint.position-left::before { | |
right: -6px; | |
border-left: none; | |
border-bottom: none; | |
} | |
.contextual-hint.position-right::before { | |
left: -6px; | |
border-right: none; | |
border-top: none; | |
} | |
/* Hover target styling */ | |
.hint-target { | |
position: relative; | |
} | |
.hint-target::after { | |
content: ''; | |
position: absolute; | |
top: -3px; | |
right: -3px; | |
bottom: -3px; | |
left: -3px; | |
border: 2px dashed transparent; | |
border-radius: 5px; | |
transition: border-color var(--hint-transition-time) ease; | |
pointer-events: none; | |
} | |
.hint-target.hint-highlight::after { | |
border-color: var(--hint-icon-color); | |
} | |
/* Pulse animation for important hints */ | |
@keyframes hint-pulse { | |
0% { | |
box-shadow: 0 0 0 0 rgba(13, 202, 240, 0.4); | |
} | |
70% { | |
box-shadow: 0 0 0 10px rgba(13, 202, 240, 0); | |
} | |
100% { | |
box-shadow: 0 0 0 0 rgba(13, 202, 240, 0); | |
} | |
} | |
.contextual-hint.important { | |
animation: hint-pulse 2s infinite; | |
} | |
/* LED tracer on hints */ | |
.contextual-hint .led-tracer { | |
position: absolute; | |
height: 2px; | |
background: linear-gradient(90deg, | |
transparent, | |
rgba(218, 75, 134, 0.7), | |
rgba(13, 202, 240, 0.7), | |
transparent); | |
width: 100%; | |
left: 0; | |
bottom: 0; | |
animation: led-trace 2s infinite linear; | |
} | |
@keyframes led-trace { | |
0% { | |
transform: translateX(-100%); | |
} | |
100% { | |
transform: translateX(100%); | |
} | |
} | |
/* Quantum particle effect for hints */ | |
.contextual-hint.has-particles { | |
overflow: hidden; | |
} | |
.hint-particles { | |
position: absolute; | |
top: 0; | |
left: 0; | |
right: 0; | |
bottom: 0; | |
pointer-events: none; | |
} | |
.hint-particle { | |
position: absolute; | |
width: 3px; | |
height: 3px; | |
background: var(--hint-icon-color); | |
border-radius: 50%; | |
opacity: 0.5; | |
animation: float-particle 3s infinite ease-in-out; | |
} | |
@keyframes float-particle { | |
0%, 100% { | |
transform: translateY(0) translateX(0); | |
opacity: 0.2; | |
} | |
50% { | |
transform: translateY(-15px) translateX(5px); | |
opacity: 0.5; | |
} | |
} |